ungewolltes überspringen von cin()
-
Hallo,
int x,y; cin>>x; cin>>y;mir ist aufgefallen, dass wenn man in der 2ten zeile einen Buchstaben eingibt die darauf folgende cin() funktion nciht mehr abgefragt wird. Warum ist das so? ich wollte zum beispiel die eingabe eines arrays mit xy.pushback(x) durch die eingabe eines 'e's terminieren.
danke
viele grüße
-
Wenn du "Müll" eingibst (d.h. Werte, die nicht interpretiert werden können), wird im Stream ein Fehlerflag gesetzt - und mit gesetztem Fehlerflag blockieren alle weiteren Eingabe-Anweisungen.
Feststellen kannst du das mitcin.fail(), zurücksetzen mitcin.clear()(und anschließend mußt du noch die nicht interpretierbaren Eingaben aus dem Stream ziehen).
-
ok danke,
aus dem stream ziehen heißt cout<<flush;?
ich dachte das eingegebene buchstaben wenigstens als asciii zeichen erkennt werden und die entsprechende nr eingetragen wird.
-
Nein, cout hat damit nichts zu tun, das ist ein ganz anderer Stream. "aus dem Stream ziehen" heißt z.B.
std::getline(cin,fehler);(da hast du anschließend infehlerdie unpassenden Eingaben) odercin.ignore(...);.
-
alles klar vielen dank