我在这段代码中看到了一个不寻常的问题:
#include <iostream>
using namespace std;
int main()
{
int number;
bool repeat=true;
while (repeat)
{
cout<<"\nEnter a number:";
cin>>number;
cout<<"\nNumber is:"
<<number;
cout<<"\nRepeat?:";
cin>>repeat;
}
system("pause");
return 0;
}
这里的代码当我在 int 类型变量中放置字符这样的“A”时,循环反复重复并且不要问我是否要重复。 当我把字符不是整数时,这个问题就出现了。 这也会出现 for 。
为什么会发生这种情况? 感谢
答案 0 :(得分:3)
读入无法转换的用户输入后,输入流处于无效状态。您需要清空流并调用clear
方法重置流上的错误位以恢复正常操作。
如果检测到输入不成功(使用输入流状态位,可通过good()
或fail()
等方法访问),则可以使用与此类似的代码重置流:
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
答案 1 :(得分:0)
当你无法从中提取int并且没有恢复时,你将cin置于错误状态。因此,当您尝试从中提取重复时,流仍处于失败状态。您需要检查号码是否失败(只需使用if(cin&gt;&gt; number))。