所以这是代码
#include<iostream>
using namespace std;
int main(){
int a,b;
while(true){
cout<<"Enter the value of a and b ";
cin>>a>>b;
if(a=='|'||b=='|')
break;
else
cout<<"The value of a is "<<a<<"\nThe value of b is "<<b<<endl;
}
}
问题是编写一个由while循环组成的程序(每次循环)读入两个整数然后打印它们。终止'|'时退出程序进入了。
当我输入像|的输入时它无限打印“a的值和b的值是”。这是什么原因?enter code here
答案 0 :(得分:0)
您的istream运算符&gt;&gt; as_int
失败了,实际上什么都没做,所以你的循环一直在继续。输入为chars并转换为带有检查的int,或者检查流是否有错误。
cin>>a>>b;
if( cin.fail( ) )
break;
另外:如果您已经跟踪到istream运算符,您会看到它为什么没有阻塞,它已经失败了。当出现问题时总是追踪......
答案 1 :(得分:0)
std :: cin(我认为所有流)都会设置错误标志其他std :: cin运行直到标志被清除。要休息流,使用std :: cin.clear()来重置错误标志,然后你必须通过std :: cin.ignore()或读入字符串缓冲区或其他东西来删除错误输入,流仍然在那里。