2016-03-25 7 views
0

Ich lerne von der LearnCpp Website und bin über diese Zeile gestolpert: "Wenn ein Fehler auftritt und ein Stream auf etwas anderes als Goodbit gesetzt ist, werden weitere Stream - Operationen in diesem Stream ignoriert. Diese Bedingung kann durch Aufrufen des clear() Funktion ". In der ios_base-Klasse habe ich jedoch bemerkt, dass die Flags statisch gesetzt sind, was bedeutet, dass sie von jeder Instanz der Klasse gemeinsam genutzt werden. Bedeutet das nicht, dass zB cin das fatalbit-Flag auf true setzt und alle anderen Instanzen der istream-Klasse gewonnen haben? t arbeiten?Wie funktionieren die E/A-Stream-Flags?

+3

Die Flags selbst werden nicht geändert, sie sind statische Konstanten. Was sich ändert, ist die zugrundeliegende Bitmaske, die in jedem Standardstrom vorhanden ist. – 0x499602D2

+0

@ 0x499602D2 Sie sollten dies als Antwort posten, weil es korrekt ist. –

Antwort

3

Die Flags selbst werden nicht geändert, sie sind statische Konstanten. Was sich ändert, ist die zugrundeliegende Bitmaske, die in jedem Standardstrom vorhanden ist. Was clear() tut, setzt die Maske zurück und setzt das Flag, das bereitgestellt wird (ios_base::goodbit mein Standard).

Verwandte Themen