struct in datei schreiben und lesen?
-
Hallo,
wollte grad inhalt von structarray in datei schrieben und wieder lesen!
schreiben geht wohl aber lesen nichtstruct Person { short alter; char name[20]; }; int main(int argc, char* argv[]) { Person p[3]; Person ps[3]; p[0].alter=12; strcpy(p[0].name,"Detlef"); p[1].alter=24; strcpy(p[1].name,"SEW"); p[2].alter=30; strcpy(p[2].name,"frer"); ofstream out("test.txt"); if(out) { for(int i=0;i<3;i++) { out<<p[i].alter<<" "<<p[i].name<<endl; } } out.close(); int i=0; ifstream in("test.txt"); if(in) { while(in) { in>>ps[i].alter; cout<<"Alter: "<<ps[i].alter; i++; } } getch(); return 0; }es kommt
Alter: 12 Alter:5367wie geht es richtig!
PS: für was brauch ich das ios::binary eigentlich??
-
Ich empfehle die FAQ Lektüre über Ströme, da steht dein Beispiel drin.
-
Hi!
Du speicherst zwar jeweils alter und name, liest aber nur alter wieder ein. Schon klar dass das Probleme macht oder?
grüße
-
In deiner Datei steht nach der Ausgabeschleife folgendes drin:
12 Detlev 24 SEW 30 frerJetzt liest du stückweise dort die Altersangaben aus (bzw versuchst es) - im ersten Schleifendurchlauf klappt das, beim zweiten Durchlauf kommt der operator>> auf das 'D' von "Detlev" - und das kann er nicht als Zahl interpretieren.
D.h., du müsstest schon die Namen der Personen mit einlesen (oder überlesen mit ignore()).
PS: ios::binary ist für Binärdateien gedacht - das schaltet die Umdeutung der Zeilenende-Zeichen ab (C++'s \n wird für Windows in \r\n übersetzt).