我正在制作一个程序,用户必须通过输入 1,2 或 3 来选择一个选项。我能够检测他们输入的数字,如果他们使用切换语句。每次我输入一个字母,程序每秒都会不断重复提示数百次。在继续之前,如何检查变量以确保它包含一个 int。我有一种感觉,它会涉及使用一个字符串,然后检查它以确保它包含一个 int 然后转换它,如果我可以有这个代码的一个例子,那就太好了。谢谢
问问题
3227 次
1 回答
9
您应该始终验证您是否已成功读取所需的输入。如果输入失败,您可能希望删除有问题的字符并重试:
int value(0);
while (!(std::cin >> value)) {
std::cout << "you entered a non-digit character\n";
std::cin.clear(); // make sure that std::cin is happy to do something
std::cin.ignore(); // ignore the offending character
}
当输入失败时,std::ios_base::failbit
在流上设置 并且流不会转换为true
(或!
应用于流的 not 运算符返回true
)。一旦std::ios_base::failbit
设置,流将拒绝取得任何进展,直到该位再次被清除。使用clear()
您可以重置错误位。然而,一旦这些位被重置,违规字符仍然在输入中。要摆脱下一个字符,您可以使用ignore()
. 如果你觉得你想忽略整行输入,你会使用类似的东西
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
于 2012-12-31T02:38:30.080 回答