Почему я получаю бесконечный цикл при нажатии буквы? Как мне перейти на проверку ошибок?

Почему я получаю бесконечный цикл при нажатии буквы? Как предотвратить переход моего кода в бесконечный цикл при проверке ошибок?

#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;
}

0

Решение

Поскольку std :: cin является типобезопасным, он знает, что буква не является допустимым вводом для «int number». Он поднимает флаг ошибки в std :: cin, и любая последующая операция завершится неудачно и немедленно вернется.

Вам нужно будет проверить состояние ошибки и очистить все флаги ошибок, прежде чем продолжить.

Посмотреть существующий пост Почему я получаю бесконечный цикл, если я ввожу букву, а не число?

1

Другие решения

Большое спасибо вам всем. Я закончил тем, что пошел с этим.

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;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector