002
04.03.2005, 14:54 Uhr
typecast
aka loddab (Operator)
|
Ne, daran liegt es nicht. Es handelt sich bei dem Fehler um genau das gleiche Problem wie hier
Das eof-bit wird erst dann gesetzt, wenn versucht wurde ueber das Ende der Datei zu hinauszulesen. Wenn der Dateizeiger auf dem Ende der Datei steht, dann liefert infile.eof() false zurueck. Also wird noch versucht ein weiteres Zeichen aus der Datei zu lesen.
Das schlaegt fehl und zeichen enthaelt diesen komischen Buchstaben.
Dieser wird dann in die Datei geschrieben. Um das zu verhindern, sollte vor beiden Schreibanweisungen ueberprueft werden, ob die Leseoperation erfolgreich war.
Man koennte das z.B. so machen:
| C++: |
if(zeichen == '&' && infile.good()) { string output = "&"; outfile << output; } else { if (infile.good()) outfile << zeichen; }
|
-- All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925) |