cin liest nicht ein
-
ich hab in meinem program zwei cins, das erste funktioniert, das zweite liest nichts ein (das programm stoppt nicht und die variable erhält den wert 0). ich habe die vermutung das es irgenwie dran liegt das ich dazwischen nicht den keyboardbuffer leere (aber ich hab natürlich keine ahnung wie man das macht
). an sich erwarte ich aber dass das geht, immerhin gibt es zahlreiche beispiele in diversen büchern wo das auch geht...
-
pack mal das dazwischen:
cin.clear(); cin.ignore(cin.rdbuf()->in_avail());
-
was machtn das zweite?
-
muhkuhmasta schrieb:
was machtn das zweite?
So viele Zeichen vom Eingabestrom zu lesen wie dort zur Verfügung stehen.
-
aber wenn ich vorher cin.clear(); gemacht hab müsste da doch nichts mehr sein oder?
-
Hallo,
cin.clear löscht nur die Fehlerflags:
http://www.cppreference.com/cppio_details.html#clear
-
cin.sync();
leerte den Stream (sollte es jedenfalls tun)
-
Hallo,
ich meine mich zu erinnern, irgendwo gelesen zu haben, dass cin.sync() nicht portabel ist?!
-
GPC schrieb:
cin.sync();
leerte den Stream (sollte es jedenfalls tun)
Nö. Zumindest nicht offiziell. Bjarne Stroustrup dachte cin.sync() sollte den Eingabestrom leeren. Der C++ Standard (und alle mir bekannten Iostream-Experten) sind der Meinung, dass sync() nur auf *Ausgabeströmen* ein vorgeschriebenes Verhalten hat. Stroustrups Wort hat zwar was C++ angeht eine Menge Gewicht (ähnlich wie Bashars in diesem Fourm), aber dem Standard muss auch er sich unterordnen. Was ist in diesem Fall ein bischen Schade ist, da ein passendes cin.sync() recht praktisch wäre.