所以这是我开始编程以来一直遇到的问题(不久之前。我仍然不知道为什么我开始使用C ++)。当我有一些整数变量并且用户的输入定义它们时,如果用户输入其他而不是整数,那么程序会惊慌失措并运行最后一个命令的无限循环。我不认为需要示例代码,但如果是,我可以很容易地做一个基本的例子。
答案 0 :(得分:5)
如果你想确切地知道你的错误是什么,那么我们需要看看你的代码,但通常的习惯是这样的:
int i;
while (std::cin >> i) {
// do something with the user's input, i
}
if (std::cin.fail()) {
std::cout << "not a number!\n";
}
如果发生故障并且您希望通过无效输入以便用户可以重试,请先致电cin.clear()
,然后cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')
忽略整行,或std::string s; std::cin >> s;
忽略一个以空格分隔的单词。
请注意,因为第二种情况实际上构造了内存中的字符串,用户可以输入几千兆字节而没有空格,程序将失败。如果输入来自终端,那通常很好,这是用户自己的愚蠢错误。如果输入来自HTTP请求或其他不受信任的来源,那么它可能不太好,所以将来某个时候你最终可能会担心它......
答案 1 :(得分:1)
答案 2 :(得分:0)
总是编程时,我的意思是,始终验证您的输入。
检查你得到的输入是否合理。 我的意思是,如果你得到的东西应该是int检查是否是。 如果不是,请转换它。
如果你得到一个字符串,检查它是否在边界内,意思是它是长,短,是什么。
cin
在您的情况下,Google将成为Google的条款。