[c++] File Stream problem
-
moin, ich habe wieder ne frage :
ich öffne ne datei und schreibe den gelichen inhalt + neuen dazu:
win_file wurde oben definiert asl string (string win_file;) ..... ifstream ein("test.txt"); while (!ein.eof()) { char eingang; eingang = ein.get(); win_file = win_file + eingang; } ein.close(); ofstream aus("test.txt"); aus<<win_file<<endl; aus<<"HAllo neuer inhalt"<<endl; aus.close(); .....die test.txt sah vor dem ausführen so aus:
hallo alter inahltdanach so :
hallo alter inhalt ÿ HAllo neuer inhaltwoher kommt das ÿ?
soweit ich weis steht das ÿ für binary = 0, aber wie kriege ich es weg, der liest das von irgend wo ein!pls help
mfg psihxxx
-
1. benutze cpp-tags um syntaks-heileiting zu bekommen
2. das y-ü kommt daher, dass das ende der datei erreicht wurde,
du aber trotzdem das zeichen schreibst.ifstream ein("test.txt"); while (!ein.eof()) { char eingang; eingang = ein.get(); // <= du musst hier prüfen, ob eof() win_file = win_file + eingang; // <= nicht hier } ein.close(); ofstream aus("test.txt"); aus<<win_file<<endl; aus<<"HAllo neuer inhalt"<<endl; aus.close(); .....
-
while (true) { char eingang; eingang = ein.get(); if(ein.eof()) { break; } win_file = win_file + eingang; }
-
jo danke! wieso bin ich nicht drauf gekommen?
-
Einfacher wäre:
{ ifstream ein("test.txt"); copy(istream_iterator<char>(ein), istream_iteartor<char>(), back_inserter(win_file)); }Da kann Dir sowas nicht mehr passieren.
Die geschweiften Klammern sind übrigens absicht. Das definiert einen Gültigkeitsbereich, so daß die Datei an der schliessenden Klammer automatisch geschlossen wird.
Tommi