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

标签 c++ debugging infinite-loop

所以这是我开始编程以来一直遇到的问题(不久前。我仍然不知道为什么我开始使用 C++)。当我有一些整数变量并且用户的输入定义了它们时,如果用户输入的不是整数其他,程序就会崩溃并运行它给出的最后一个命令的无限循环。我认为不需要示例代码,但如果需要,我可以很容易地制作一个基本示例。

最佳答案

如果您想确切地知道您的错误是什么,那么我们需要查看您的代码,但通常的习惯用法是这样的:

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 请求或其他不受信任的来源,则可能不太好,因此将来某个时候您可能最终会担心它...

关于c++ - 当 int =(不是整数的东西)时停止无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163588/

相关文章:

c++ - 如何删除包含结构的 map 或包含结构的 map ?

python - 打破pydev中的异常

javascript - 为什么我不能有两个互相执行的 .js 脚本?

安卓 : Implementation of two way Endless Viewpager

c++ - 使用 boost::iterator_facade<> 为迭代器返回 ref 但为 const_iterator 返回 const_ref?

c++ - 在 C++ 中使用 libsvm

c++ - 多线程 SQLite 崩溃

css - 当我在浏览器中检查元素模型时单击 css 链接后如何返回

c++ - 如何在visual studio 2022 for c/c++中指定多个调试命令?

c++ - 从文件C++读取时发生无限循环