cin.clear()
-
Bei cin.clear() wird doch einfach nur: "failbit", "badbit" und "goodbit" wieder auf einen gültigen Status gesetzt?! Oder passiert da noch mehr? Ist das korrekt?
MfG
Stromberg
-
Eigentlich hat die Methode clear() noch einen Parameter, welcher aber standardmäßig auf 'ios_base::goodbit' steht, d.h. alle restlichen (Fehler-)Flags werden gelöscht und der Stream wieder in den Zustand 'good' versetzt.
Nichtsdestotrotz kann natürlich die nächste Ein-/Ausgabe-Aktion fehlschlagen.Mehr sollte eigentlich nicht passieren, obwohl das aber implementationsabhängig sein kann.
Ich halte die Benennung der Methoden auch nicht für so gelungen, da es noch die Methode setstate(iostate s) gibt, welche aber den übergebenen Parameter zusätzlich setzt (und die anderen unangetastet läßt).
-
Meinst du mit "noch einen Parameter" eofbit?
MfG
Stromberg
-
Nein, damit meint er, daß du clear() auch einen Parameter übergeben kannst -
cin.clear(failbit);setzt zuerst alle Statusflags zurück und aktiviert anschließend das failbit. (Defaultwert für diesen Parameter ist 'goodbit')
-
Sorry, habe mich wohl etwas unglücklich ausgedrückt.
-
Achso, also wenn ich cin.clear(eofbit) mache, dann werden goodbit,failbit und badbit zurückgesetzt und eofbit wird gesetzt. Und bei cin.clear(badbit) wird badbit gestzt und alle anderen wieder zurückgesetzt....u.s.w....und default ist halt imemr goodbit, also wird goodbit gesetzt, und alles anderen zurückgesetzt..!?
MfG
Stromberg
-
Exakt, daher finde ich die Benennung 'leeren' etwas unglücklich...