Streamzustände: Erläuterungen
Bei dem Status good( ) oder eof( ) war die letzte Eingabeoperation
erfolgreich.
Auswirkungen hat der Zustand vor allem auf die nächsten Streamoperationen:
-
Bei dem Status good( ) kann die nächste Eingabeoperation erfolgreich
sein
-
in allen anderen Fällen wird die nächste Eingabeoperation
auf jeden Fall fehlschlagen
-
Eingabeoperationen auf einem Stream, der sich nicht im good( )-Zustand
befindet, werden erst gar nicht versucht.
Man beachte, daß ios::goodbit
nur dann gesetzt ist, wenn keines der
anderen Flags gesetzt ist.
Der Unterschied zwischen failbit und badbit ist sehr gering
und eigentlich nur für den Implementator der Eingabeoperationen von
Bedeutung:
-
bei failbit wird angenommen, daß der Stream im Grunde "in
Ordnung" ist und keine Zeichen verlorengegangen sind; als typisches Beispiel
seien Formatfehler beim Einlesen genannt, z.B. bei erwartetem
char
,
aber eingelesenem int
.
-
im Status badbit wird für nichts mehr garantiert, z.B. bei
einer Positionierung vor den Dateianfang
Wird bei der clear( )-Elementfunktion kein Parameter übergeben,
so werden alle Fehlerflags (auch ios::eofbit
, welches man z.B. beim
wahlfreien Dateizugriff benötigt) gelöscht - mit Ausnahme eines
eventuell vorhandenen ios::hardfail-Flags.
Wird jedoch ein Parameter übergeben, so werden die darin übergebenen
Flags gesetzt, alle anderen zurückgesetzt.