У меня есть простое меню на C++ с возможностью выбора параметров меню. Если пользователь вводит что-либо, кроме действительного int
, например char
или double
, программа переходит в бесконечный цикл. Мой код выглядит следующим образом.Меню C++ застряло в бесконечности, если пользователь вводит недопустимое целое число
#include <iostream>
using namespace std;
int main()
{
int selection;
do {
cout << "1) Update inventory" << endl;
cout << "2) Sell items" << endl;
cout << "3) List inventory" << endl;
cout << "4) Quit" << endl;
cout << "Please select an option: ";
cin >> selection;
}
while (selection != 4);
return 0;
}
Почему недействительные ответы вызывают бесконечный цикл и как его можно предотвратить?
Вы хотите проверить правильность потока, например 'if (! Cin) {/ * handle error * /}'. См. Также [Почему iostream :: eof внутри условия цикла считается неправильным?] (Http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong). – jaggedSpire