Я пытаюсь сделать простое меню с помощью переключателя. Я также хочу выполнить проверку, если пользователь сделал действительный ввод (только int от 1 до 4). Ввод -4 или 44 работает с этой проверкой. Но если я вхожу что-то вроде «w», это дает мне бесконечный цикл. Я предполагаю, что мне нужно другое, если/else с if (! Cin) blabla else, идите вперед с помощью переключателя. Но я не уверен, как я делаю то, что другой запускает переключатель.C++, получение бесконечного цикла
int menu() {
int enter;
bool exit = false;
do {
cout << "Wie soll angefangen werden: " << endl; //Enter your choice
cout << "1 - Spiel starten" << endl; // do game();
cout << "2 - Highscore " << endl; //do score();
cout << "3 - Quiz starten " << endl; //do quiz();
cout << "4 - Ende " << endl; //end the programm
cin >> enter;
switch (enter) {
case 1:
game();
break;
case 2:
score();
break;
case 3:
showQuizDialog();
break;
case 4:
exit = true;
break;
default:
cout << "Keine gültige Eingabe, nochmal: " << endl; //invalid input, again
void flushCin();
} //end of switch
} while (exit == false);
}//end of menu();
Что такое 'flushCin'? Вам не нужно будет очищать поток, как вы уже читали. – Mgetz
Попробуйте изменить 'int enter' на' char enter' и 'case 1:' to 'case '1':' – Shubham
Две точки стиля. Во-первых: нет смысла сравнивать «bool» с константой; конечное условие должно быть просто 'while (! exit)'. Во-вторых, вы действительно должны добавить «break;» в случае по умолчанию. –