Как исправить бесконечный цикл в моем коде?Я думаю, что он пропускает второй CIN, поэтому он продолжает цикл - PullRequest
0 голосов
/ 25 мая 2019

Если вход не является целым числом, он будет давать бесконечный цикл, я думаю, что он пропускает второй код, но я не знаю, как это исправить.

cout << "Number of days : ";
int days;
cin >> days;
while(!cin){
    cout << "Invalid";
    cin >> days;
}

1 Ответ

2 голосов
/ 25 мая 2019

Когда operator>> не удается проанализировать ввод, он переводит поток в состояние ошибки, которое необходимо явно очистить, прежде чем вы сможете снова прочитать из потока, например:

cout << "Number of days : ";
int days;
while (!(cin >> days)) {
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << "Invalid";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...