Tom: Verständnisproblem C++ ios_base::failbit

Beitrag lesen

Hello,

Hi alle,

ich lese in einem C++ Programm aus einer Datei zeilenweise ein, um auf Fehler zu reagieren habe ich die Bitmaske für Exceptiones auf ios_base::failbit | ios_base::badbit gesetzt.

Am Ende der Datei wird immer eine Exception ausgelöst, aber warum? Das Bit für EOF ist doch nicht gesetzt. Setzte ich die Bitmaske nur auf ios_base::badbit läuft alles prima. In meinen Büchern finde ich nur das failbit für, die letzte Ein- oder Ausgabeoperation war fehlerhaft, steht. Kann das so nicht nachvollziehen, wäre schön wenn mir einer auf die Sprünge helfen kann.

Das ist richtig. Das Failbit wird auch verglichen, wenn EOF erreicht ist und deshalb nicht weitergelesen werden kann. Das EOF-Bit bedarf hingegen keines gesetzten Failbits. Siehe auch:

http://www.greenend.org.uk/rjk/2000/10/iostream.html

Außerdem musst Du daran denken, die Fehlerbits im Exception-Handler wieder zurückzusetzen, wenn Du im selben Programm nochmal damit arbeiten willst.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de