c++ - 为什么这段代码给我一个无限循环?

标签 c++ loops infinite-loop

当我输入正确的值(整数)时,它很好。但是当我输入一个字符时,我得到一个无限循环。我查看了这段代码的每一面,但没有发现问题。为什么会这样?我在 Windows 上使用 g++ 4.7。

#include <iostream>
#include <limits>

int main()
{
    int n;
    while (!(std::cin >> n))
    {
        std::cout << "Please try again.\n";
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cin.clear();
    }
}

输入:x
输出:

enter image description here

最佳答案

这是因为您的恢复操作顺序错误。先清除错误再清除缓冲区。

    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - 为什么这段代码给我一个无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254420/

相关文章:

java - 迭代存储在字符串中的一系列位

matlab - Matlab GUI 中的无限循环导致 Matlab 在 GUI 关闭时卡住?

c++ - 如何在 C++ 中编写遍历两个数组的 for 语句

c++ - 如何在 .pri 文件的内容前加上路径?

c++ - Direct3D 中具有雾问题的 HLSL 多纹理

c++ - 为结构定义 operator<

r - 限制函数在 R for 循环中处理的时间

java - 使用带有 while 循环的 if 语句?

Java 程序内存不足

c++ - 如何在循环中使用更少的 CPU?