Standarteingabe Fehler / Wichtig !!!
-
hallo ich habe folgendes:
int a; do{ cout << "1: Menue" << endl; cout << "2: Menue" << endl; cout << "3: Menue" << endl; cout << "0: EXIT" << endl; cout << "Eingabe : "; cin >> a; cout << endl; if (a==1) a1(); if (a==2) a2(); if (a==3) a3(); }while (a!=0);Wenn ich nun aber einen Buchstaben anstelle der erwarteten Zahl eingebe,
bekomme ich einen Fehler, indem sich das Textmenue im wieder in einer Endlosschscheife aufbaut.
Wie bekomme ich das weg ?
Sprich wie Stelle ich es an das wirklich nur Zahlen eingegeben werden?
-
hat keinen ne Ahnung ???
-
int a = 0; do{ cout << "1: Menue" << endl; cout << "2: Menue" << endl; cout << "3: Menue" << endl; cout << "0: EXIT" << endl; std::istringstream isstr; std::string input; do { std::cout << "Eingabe: "; << std::flush; std::getline(std::cin, input); isstr.clear(); isstr.str(s); isstr >> a; } while (!isstr); cout << endl; if (a==1) a1(); if (a==2) a2(); if (a==3) a3(); }while (a!=0);So in etwa?
-
Nein das hilft leider auch nicht !!!
immer wenn ich einen Buchstaben eingebe anstelle einer zahl komme ich in eine Endlosschleife !!!
-
Artur_21 schrieb:
Nein das hilft leider auch nicht !!!
immer wenn ich einen Buchstaben eingebe anstelle einer zahl komme ich in eine Endlosschleife !!!
Ja, dann versuch's mal hiermit
int a; do{ cout << "1: Menue" << endl; cout << "2: Menue" << endl; cout << "3: Menue" << endl; cout << "0: EXIT" << endl; cout << "Eingabe : "; a = -1; cin >> a; cin.clear(); // ggf. Eingabe-Fehler löschen cin.ignore( 9999, '\n' ); // Rest der Eingabezeile überlesen cout << endl; if (a==1) a1(); if (a==2) a2(); if (a==3) a3(); }while (a!=0);Gruß
Werner