当我输入正确的值(整数)时,它很好。但是当我输入一个字符时,我得到一个无限循环。我查看了这段代码的每一面,但没有发现问题。为什么会这样?我在 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
输出:
最佳答案
这是因为您的恢复操作顺序错误。先清除错误再清除缓冲区。
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
关于c++ - 为什么这段代码给我一个无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254420/