Klasseninhalt in Datei speichern
-
Hi Leute...
Wie kann ich einen Klasseninhalt in einer Datei speichern?
Mit dem Struct mach ichs ja so:
#pragma argsused struct Arbeiter { char name[20]; char vorname[20]; int alter; }; int main(int argc, char* argv[]) { fstream Arbeitsdatei("c:\\Arbeitsdatei.txt",ios::out|ios::binary); Arbeiter* A1 = new Arbeiter; cin>>A1->name; cin>>A1->vorname; cin>>A1->alter; Arbeitsdatei.write((char*)&A1,sizeof(A1)); Arbeitsdatei.close(); Arbeitsdatei.open("c:\\Arbeitsdatei.txt",ios::in|ios::binary); while(!Arbeitsdatei.eof()) { Arbeitsdatei.read((char*)&A1,sizeof(A1)); cout<<A1->name<<" "<<A1->vorname<<" "<<A1->alter<<endl; } Arbeitsdatei.close(); getch(); return 0; }
PS: ja ich weiß kein Conio und getch()....
-
Mit Klassen geht das prinzipiell genauso, wenn du nix "höheres" wie vererbung... benutzt. Dann mustt du die member einzeln abspeichern und lesen (is aber Aufgabe der Klasse)...
-
hm...also nahc dem prinzip bekomm ich nur mist rraus, kannst mir mal ein GANZ EINFACHES Beispiel geben?
-
Warum schreibst du fuer die Klasse keine Serialisierungsfunktion, wenn du sie schreiben / lesen willst aus einer Datei?
-
Eine_Frage schrieb:
hm...also nahc dem prinzip bekomm ich nur mist rraus, kannst mir mal ein GANZ EINFACHES Beispiel geben?
[cpp]
#pragma argsused
class Arbeiter
{
public:
char name[20];
char vorname[20];
int alter;
};int main(int argc, char* argv[])
{
fstream Arbeitsdatei("c:\\Arbeitsdatei.txt",ios::out|ios::binary);
Arbeiter* A1 = new Arbeiter;
cin>>A1->name;
cin>>A1->vorname;
cin>>A1->alter;Arbeitsdatei.write((char*)&A1,sizeof(A1));
Arbeitsdatei.close();Arbeitsdatei.open("c:\\Arbeitsdatei.txt",ios::in|ios::binary);
while(!Arbeitsdatei.eof())
{
Arbeitsdatei.read((char*)&A1,sizeof(A1));
cout<<A1->name<<" "<<A1->vorname<<" "<<A1->alter<<endl;
}
Arbeitsdatei.close();getch();
return 0;
}[/cpp]
-
hm...so hab ich das eigentlich auch probiert....nur kam dann mist raus beim auslesen der datei!
Muss ich morgen nochmal schauen!
Danke erstmal!