Es geht nicht um dumm oder schlau. Es geht nicht darum, auf anderen rum zu hacken oder sich über sie lustig zu machen.
Es ist so, dass man einsehen muss, dass man niemals alle Details kennen wird. Das man sich nicht dumm fühlt, wenn man etwas nicht weiß und korrigiert wird, sondern es als Chance nutzt, sich zu verbessern.
Die Idee hinter deinem Code war ja durchaus richtig. Die Umsetzung war nur falsch, weil du ein paar Details nicht wusstest. Und sie war ziemlich spektakulär falsch, weil C++ eine sau komplexe Sprache ist und auf einmal Dinge im Hintergrund abgehen, die man nie erwartet hätte. Und das nicht nur als Anfänger, darauf stößt man später immer wieder. Jedenfalls solange man den Ehrgeiz hat, Neues zu lernen und nicht immer nur das selbe macht.
Der Code könnte in etwa so aussehen (hab ich jetzt nicht getestet):
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//speichern
std::string str("das hier kommt in die Datei");
unsigned int Length=str.length();
fwrite(&Length, sizeof(unsigne int), 1, File);
fwrite(str.c_str(), sizeof(char), Length, File);
//lesen:
unsigned int Length;
fread(&Length, sizeof(unsigned int), 1, File); //größe lesen
char Data[]=new char[Length]; //temporären Buffer erstellen
fread(Data, sizeof(char), Length, File); //Buffer füllen
std::string str(Data); //String Objekt erstellen
delete[] Data; //temporären Buffer löschen
|
Die C++ Methode mit Filestreams wäre die hier:
http://www.cplusplus.com/doc/tutorial/files/
Zu beachten ist, dass man da auch nicht immer einfach nur << und >> benutzen kann, da das Leerzeichen normalerweise als Trennzeichen interpretiert wird, was bei Strings natürlich Probleme machen kann.