【发布时间】:2013-12-13 19:12:30
【问题描述】:
当我输入正确的值(整数)时,这很好。但是当我输入一个字符时,我得到一个无限循环。我查看了这段代码的每一面,但找不到问题。为什么会这样?我在 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
输出:
【问题讨论】:
-
在您输入时是否会出现像 CR 这样的不可打印字符,或者
cin是否会抓取一个字符? -
只需使用
scanf。更简单、更清晰。 -
@Joker_vD 但我认为这是 C++...
-
scanf永远不是正确的答案。对任何东西。 -
@qwrrty 好吧,
scanf比cin >>稍微快一点(不知道为什么,它必须解析格式字符串),所以如果问题是“性能!1!!11elevenone”,这可能就是答案。
标签: c++ loops infinite-loop