当int =(不是整数的东西)时停止无限循环

h3h*_*alf 1 c++ debugging infinite-loop

所以这是我开始编程以来一直存在的问题(不久之前.我仍然不知道为什么我开始使用C++).当我有一些整数变量和用户的输入定义它们,如果用户输入一些其他的不是整数节目怪胎,并运行它被赋予了最后一个命令的无限循环.我不认为需要示例代码,但如果是,我可以很容易地做一个基本的例子.

Ste*_*sop 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";
}
Run Code Online (Sandbox Code Playgroud)

如果发生故障并且您希望通过无效输入以便用户可以再次尝试,则先调用cin.clear(),然后cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')忽略整行,或std::string s; std::cin >> s;忽略以空格分隔的单词.

请注意,因为第二种情况实际上构造了内存中的字符串,用户可以输入几千兆字节而没有空格,程序将失败.如果输入来自终端,那通常很好,这是用户自己的愚蠢错误.如果输入来自HTTP请求或其他不受信任的来源,则可能不太好,所以将来某个时候您最终可能会担心它......