C++ Меню застряло в бесконечности, если пользователь вводит недопустимое целое число
У меня есть простое меню C++ с возможностью выбора пунктов меню. Если пользователь вводит что-либо кроме допустимого int
такой как char
или же double
программа войдет в бесконечный цикл. Мой код выглядит следующим образом.
#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;
}
Почему неправильные ответы вызывают бесконечный цикл и как его можно предотвратить?
1 ответ
Перед
cin >> selection;
Поместите эти две строки:
cin.clear ();
cin.ignore ();
Это очистит буфер и позволит вводить данные.