Почему я получаю бесконечный цикл при нажатии буквы? Как предотвратить переход моего кода в бесконечный цикл при проверке ошибок?
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "Enter a number in the range 1-100: ";
cin >> number;
while (number > 1 || number < 100)
{
cout << "ERROR: Enter a value in the range 1-100: ";
cin >> number;
}
return 0;
}
Поскольку std :: cin является типобезопасным, он знает, что буква не является допустимым вводом для «int number». Он поднимает флаг ошибки в std :: cin, и любая последующая операция завершится неудачно и немедленно вернется.
Вам нужно будет проверить состояние ошибки и очистить все флаги ошибок, прежде чем продолжить.
Посмотреть существующий пост Почему я получаю бесконечный цикл, если я ввожу букву, а не число?
Большое спасибо вам всем. Я закончил тем, что пошел с этим.
while (!(cin >> number))
{
cout << "ERROR: Enter a value in the range 1-100: ";
//to clear input stream
cin.clear();
//to discard previous input
cin.ignore(1200, '\n');
cin >> number;
}