当我输入正确的值(一个整数)时,一切正常。但是当我输入字符时,就会陷入无限循环。我已经检查了代码的每个方面,但找不到问题所在。为什么会发生这种情况?我在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
输出:
cin
只获取一个字符? - bright-starscanf
。更简单、更清晰。 - Joker_vDscanf
不是任何东西的正确答案。 - Tim Piercescanf
比cin >>
稍微快一点(不确定为什么,它必须解析格式字符串),所以如果问题是“性能!1!!11elevenone”,那么这可能是答案。 - Joker_vD