Итак, я показываю меню, используя цикл do while, как показано ниже, и я хочу, чтобы пользователю было предложено меню, пока они не сделают действительный выбор ввод цифр 1, 2, 3 или 4. Затем я хочу использовать оператор case switch для идентификации пользователя и выполнения соответствующего блока кода. Однако, когда дело доходит до проверки ввода, как я могу объяснить, что пользователь вводит букву вместо числовой цифры? В приведенном ниже коде успешно продолжается следующая итерация, чтобы перепрограммировать пользователя при вводе буквы, за исключением того, что он входит в непрерывный цикл.Застрял в бесконечном цикле при проверке ввода пользователя как int
int selection;
do{
cout << "Which option would you like to select? (select 1, 2, or 3)";
cout << "1: Option 1" << endl;
cout << "2: Option 2" << endl;
cout << "3: Option 2" << endl;
if(!(cin >> selection)){
cout << "Please select an integer from 1-4." << endl;
cin.clear()
}
}while(selection != (1) or (2) or (3) or (4));
Я попытался вставить код ниже с помощью istringstream на поток пользователей Ответные из строки в междунар внутри цикла в то время как альтернативный метод, чтобы попытаться решить эту проблему, но безрезультатно.
string temp;
cin >> temp;
clearInputBuffer();
istringstream is(temp);
is >> selection;
ОБНОВЛЕНО КОД - по-прежнему получать бесконечную петлю (только тогда, когда пользователь вводит алфавитный
характер; целые числа behaveas ожидаемый)
int selection;
do{
cout << "Which option would you like to select? (select 1, 2, or 3)";
cout << "1: Option 1" << endl;
cout << "2: Option 2" << endl;
cout << "3: Option 2" << endl;
if(std::cin >> selection){
cout << "Enter the new price: ";
}
else if(!std::cin.eof()){
cout << "Please select an integer from 1-4." << endl;
cin.clear();
}
}while(selection != 1 && selection != 2 && selection != 3 && selection != 4);
Я уверен, вы не знаете, что 'выбор! = (1) или (2) или (3) или (4)' 'означает –
что-нибудь или true' всегда' true'. – juanchopanza