Я обнаружил, что этот похожий вопрос задавался много раз, но все еще не смог найти решение для моего.
В моем случае я хочу отобразить что-то, когда пользователь вводит число от 1 до 5, выдавайте ошибку, когда он вводит что-то неправильное, например символы, «3g», «3.», «b3» и любое число с плавающей точкой.
Я попробовал приведенный ниже код, но это создало так много других проблем.Например, если я введу 3g
или 3.5
, он возьмет только 3
и проигнорирует все остальное, поэтому (!cin)
не будет работать вообще.
Во-вторых, если я введу что-то вродесимвол __userChoice
будет автоматически преобразован в 0
, и программа напечатает "Please select a number from 1 to 5."
вместо "Invalid input, please input an integer number.\n"
, что я и хочу.
cout << "Please select: ";
cin >> __userChoice;
if (__userChoice > 0 && __userChoice < 5) {
cout << "You select menu item " << __userChoice <<". Processing... Done!\n";
}
else if (__userChoice == 5) {
Finalization(); //call exit
}
else if (__userChoice <= 0 || __userChoice > 5) {
cout << "Please select a number from 1 to 5.\n";
}
else (!cin) {
cout << "Invalid input, please input an integer number.\n";
}
cin.clear();
cin.ignore(10000, '\n');