unpassender Typ, cin wird übersprungen
-
Hallo,
versuche mir gerade die Grundlagen von C++ beizubringen und bin dabei auf ein komisches Verhalten gestoßen, welches ich mir nicht erklären kann.
Hier ein Minimalbeispiel:#include<iostream> using namespace std; int main() { int count; cin >> count; cout << count << " ausgabe nummer\n"; string name; cin >> name; cout << name << " ausgabe string"; return 0; }Wenn ich nun bei der Ausführung zuerst eine Ganzzahl und dann einen String eingebe funktioniert es wie erwartet.
Wird aber zuerst ein Buchstabe an der Stelle 'cin >> count;' übergeben, dann findet die Abfrage 'cin >> name;' nicht mehr statt. Ausgegeben wird dann für den Inhalt von count, je nach Compiler, 0 oder -1 (ist nachvollziehbar da der falsche Typ übergeben wurde) und 'name' bleibt leer.
Kann mir jemand erklären warum die Zeile 12 im Code nicht mehr ausgeführt wird?Ich hoffe jemand kann mir helfen, danke schon mal im voraus

-
Der Stream setzt bei einem Fehlschlag das sog. "failbit", das bedeutet, dass irgendwann mal das Einlesen fehlgeschlagen ist. Genau das passiert, da du einen Buchstaben eingegeben hast. Du kannst das failbit wie folgt aufheben:
std::cin.ignore(std::numeric_limits<std::streamsize>::max()); std::cin.clear();Hierfür must du noch den Header <limits> includen.
-
Ahja, das ist nachvollziehbar

Danke für die Hilfe.