Konsolenanwendung Menü nur Zahlen
-
Hi,
ich habe eine Konsolenanwendung mit einem Menü. Dabei sollen nur Zahlen als gültige Eingabe weiterverarbeitet werden.
Leider fährt er auch mit Buchstaben etc. weiter.Hier einmal der Code:
void Control::Menu() { int auswahl = 1; while(auswahl != 0) { system("cls"); cout <<"Wilkommen zum Programm"<<endl<<endl; cout <<"----Menue----"<<endl; Auswahlliste->ausgeben(); cout <<endl<<"[0] Programm beenden"<<endl; cin >> auswahl; if (auswahl != 0 && auswahl < Auswahlliste->GetAnzahlListe()) { //Verarbeitung getch(); } else { cout << "Diesen Punkt gibt es nicht" << endl; getch(); } } }
-
Folgende Verbesserungsvorschläge:
void Control::Menu() { int auswahl; do { system("cls"); cout <<"Wilkommen zum Programm"<<endl<<endl; cout <<"----Menue----"<<endl; Auswahlliste->ausgeben(); cout <<endl<<"[0] Programm beenden"<<endl; cin >> auswahl; if (!cin.fail() && auswahl != 0 && auswahl < Auswahlliste->GetAnzahlListe()) { //Verarbeitung getch(); } else { cout << "Diesen Punkt gibt es nicht" << endl; getch(); } } while (auswahl != 0); }Do-Schleife ist schöner. cin.fail() abfragen.
-
Vielen Dank für deine Anwort.
Habe es nun ein mal abgeändert.Allerdinfs hab ich einen Fehler noch.
Sobald die Eingabe ein Buchstabe oder Zeichen ist, bleibt dauerhaft "Diesen Punkt gibt es nich" stehen und ich kann keine Eingabe mehr tätigen.
-
Hab die Lösung gefunden.
Musste noch
cin.clear(); cin.ignore(cin.rdbuf()->in_avail());schreiben, wenn ein Fehler auftrat.