我有一个需要int的switch case,当给出一个int时,它按预期运行。使用cin从用户处获取int。如果用户输入一个字母,该功能会在后续传递中跳过cin并继续循环。如何输入错误的类型导致程序停止等待cin?
如果我输入等效的字母整数,它可以正常工作,例如101而不是e。我希望它只是进行类型转换,但我想这不是它的作用。
重现问题的最简单版本代码:
#include <iostream>
bool ui_switch();
int main() {
while(ui_switch());
return 0;
}
bool ui_switch() {
int input;
std::cout << "user > ";
std::cin >> input;
switch (input) {
case 1:
std::cout << "Exiting cin loop\n";
return false;
break;
case 2:
std::cout << "Not exiting loop\n";
break;
default:
std::cout << "Help, I'm trapped in a loop!\n"; // if char entered
break;
}
return true;
}