Bisher war schon des öfteren von dem Zustand eines Streams die Rede. Um diesen
neuen Begriff zu rechtfertigen, muß es mehr als nur einen Zustand geben.
Es bleiben mehrere Fragen offen:
Welche Zustände bzw. welche Möglichkeiten des Wechsels zwischen
den verschiedenen Zuständen gibt es?
Wie kann man den Zustand eines Streams feststellen?
Letztere Frage ist relativ leicht zu beantworten: Für den prinzipiellen
Zustand eines Streams werden in der (Basis-)Klasse ios eine Reihe von
Flags gesetzt, sogenannte Zustandsflags.
Zu diesem Zweck sind verschiedene Bitkonstanten als Flag definiert,
die in einer internen Stream-Komponente verwaltet werden.
Flag
Bedeutung
ios::goodbit
alles in Ordnung
ios::eofbit
End-Of-File (Ende der Datei)
ios::failbit
Fehler: letzter Vorgang nicht korrekt abgeschlossen
ios::badbit
fataler Fehler: Zustand nicht definiert
ios::hardfail
Hardware-Fehler
(Man beachte: das Flag ios::hardfail ist nicht in allen Implementierungen
enthalten; falls es nicht vorhanden ist, ist die Funktionalität in
ios::badbit integriert; die Unterscheidung badbit/hardfail
entfällt in diesem Fall.)