Я не могу понять, почему это попадает в цикл после получения нецелого ввода. Я пробовал cin.flush (), который, кажется, не существует, cin.clear (), который, похоже, должен работать, даже cin.sync () после прочтения поста другого человека о его работе, но не смог кажется, имеет большой смысл. Также попробовал cin.bad ().
Большое спасибо за любую помощь
Пожалуйста, введите первое число: f
Извините, я не думаю, что это число?
Пожалуйста, введите первый номер: Извините,
Я не думаю, что это число?
Пожалуйста, введите первый номер: Извините,
Я не думаю, что это число?
Пожалуйста, введите первый номер: Извините,
Я не думаю, что это число?
Пожалуйста, введите первый номер: Извините,
Я не думаю, что это число? Извините,
у тебя больше не будет попыток. Нажмите
любой ключ, чтобы продолжить. , .
#include <iostream>
using namespace std;
int main(){
int entry;
int attempts = 1;
int result;
while(attempts <= 5) {
try {
cout << "\n\nPlease enter the first number: ";
cin >> entry;
if (cin.fail())
throw "Sorry, I don't think that's a number?";
if (entry < 0)
throw "Sorry, no negative numbers. Try something else? ";
cout << "\nNow the second number: ";
cin >> entry;
cin.clear();
cin.get();
}
catch (char* error) {
cout << error;
attempts++;
}
}
if (attempts > 5)
cout << "Sorry, you don\'t get any more tries.\n";
system("pause");
return 0;
}