嘿,当我输入数字字母时,我的代码一直停留在循环中,它只是使用“无效输入,我再试一次”来输出我的输出。这只是一个简单的菜单。
答案 0 :(得分:3)
如果您输入任何“无效”,以便从cin读取将导致错误,您必须调用cin.clear()
才能读取更多输入,否则操作符中的流将立即返回。 / p>
通常,在读取用户输入时,检查cin的状态并退出,或者在无效时执行一些错误处理。此外,在输入尝试失败时,导致错误的字符仍将位于cin中,并且需要被忽略(例如,直到下一个换行符):
#include <iostream>
#include <limits>
int main() {
int userOption;
while(1) {
while(!(std::cin >> userOption)) {
std::cout << "Invalid input." << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << userOption << std::endl;
}
return 0;
}
答案 1 :(得分:0)
问题在于以下代码行,
cin.ignore(numeric_limits<streamsize>::max(), '\n');
输入单个号码时,您不必忽略任何其他字符。因此,只需删除上面的代码行即可更正您的程序。