Archief - [PROG][C++] Gebruik van <fstream> in een win32app

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Recipe4hate

Legacy Member
Ik heb enkele problemen met de fstream. Het schrijven naar en lezen van bestanden via ofstream en ifstream vanuit een console applicatie lukt perfect. Nu wil ik graag enkele settings opslaan vanuit een windows applicatie maar ik kom enkele probleempjes tegen.

Ik doe: (enkel flarden uit de code)
Code:
 [B]HEADER FILE[/B]
#include <fstream> //Used for saving and loading deck
using namespace std;

private:
ofstream * file;

********************************

[B]CPP FILE[/B]
file = new ofstream();
file->open("Deck.txt");
file->write(String("test"));
file->close();

Dit gedeelte compileert zonder problemen, maar hoe kan ik nu een string wegschrijven naar de file? Als ik file->write(string); neem vraagt hij om een 2de argument, namelijk std::Streamsize_Count(). Kan iemand me uitleggen wat ik fout doe of wat ik anders moet doen, en misschien ook een verhelderend antwoord geven over de streamsize_count?

Ook geeft hij me de foutmelding 'Argument 1, cannot convert String to Const Char' als ik typ:
Code:
file->write(String("")+CardDeck->GetActiveCard()->GetName(), 
                       CardDeck->GetActiveCard()->GetName().GetLength());
Bedankt!

Deguchi

Legacy Member
Write: verwacht een lengte als 2de argument.
c_str: om u string te converteren naar een const char wat nodig is voor de write functie.

Die site is trouwens zeer handig voor allerlei C/C++ functies ;)

Recipe4hate

Legacy Member
En hoe precies gebruik ik de c_str()? Is het niet invoer.c_str()?

Edit: blijkbaar is het casten van String naar const char * moeilijker dan ik dacht.

Deguchi

Legacy Member
gewoon: string(" ").c_str()
En bij u CardDeck->GetActiveCard()->GetName().c_str() of CardDeck->GetActiveCard()->GetName()->c_str() afhankelijk wat u return type is.

Het kan wel zijn dat u "+" dan niet meer werkt, ben niet zeker. Als dat het geval, dan steekt ge de twee waardes tijdelijk een in buffer string en schrijft ge die dan weg.

killgore

Legacy Member
je kan wel nog optellen bij char*'s , maar compiler zal daar wel warning/fout geven en je wilt dat ook niet (omdat hij niet die strings gaat concatten :p).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan