Ich versuche zu schreiben und lesen Objekt der Klasse in und aus Binärdatei in C++. Ich möchte das Datenelement nicht einzeln schreiben, sondern das gesamte Objekt auf einmal schreiben. Ein einfaches Beispiel:Schreiben und lesen Objekt der Klasse in und aus Binärdatei
class MyClass {
public:
int i;
MyClass(int n) : i(n) {}
MyClass() {}
void read(ifstream *in) { in->read((char *) this, sizeof(MyClass)); }
void write(ofstream *out){ out->write((char *) this, sizeof(MyClass));}
};
int main(int argc, char * argv[]) {
ofstream out("/tmp/output");
ifstream in("/tmp/output");
MyClass mm(3);
cout<< mm.i << endl;
mm.write(&out);
MyClass mm2(2);
cout<< mm2.i << endl;
mm2.read(&in);
cout<< mm2.i << endl;
return 0;
}
jedoch die laufende Ausgabe zeigt, dass der Wert von mm.i angeblich auf die binäre Datei geschrieben wird gelesen und
$ ./main
3
2
2
Also, was ist falsch mm2.i nicht richtig zugewiesen damit?
Was soll ich beachten, wenn ich generell ein Objekt einer Klasse in eine Binärdatei schreibe oder lese?
Danke! Ist es möglich, ein einzelnes Objekt zum Schreiben und Lesen von Dateien in C++ zu definieren? Ich erinnere mich, dass es in C. möglich ist. – Tim
@Tim.YEs können Sie einen Datei-Stream zum Lesen und Schreiben geöffnet haben. –
Meiner Meinung nach ist Yann Ramins Antwort viel nützlicher. Er erklärt diese Spülungsidee und zeigt auch einen besseren Weg mit Boost. – MeM