Zeichen in stream zurückstelle
-
Wieso kann ich bei cin>>c; keine weitere Eingabe machen wenn bei cin>>a; eine Zahl eingeben wurde? Ich mein ich setzte den Error Status doch mit cin.clear(); zurück.
int a; char c; cin>>a; if( cin.fail() ) { cin.clear(); cin>>c; cout<<c<<endl; }
-
cin.unget schrieb:
Wieso kann ich ... keine weitere Eingabe machen
Was heisst das?
cin.unget schrieb:
eine Zahl eingeben wurde?
Du meinst keine?
-
Wenn du was eingibst, was nicht zum Typ von a passt, bleibt es im Eingabepuffer und wird beim nächsten cin sofort c zugewiesen. Auftrag erfüllt, weitere Eingabe nicht nötig.
Lösung: leere den Eingabepuffer vor der erneuten Benutzereingabe.
-
Danke
@manni
Ja sry hatte mich verschrieben^^