关于cin,这个小程序为什么会在输入字母后出现死循环?
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
while(1)
{
int a;
cin>>a;
if(a==1)
break;
cout<<"YES"<<endl;
}
}
[解决办法]
你输入了字母,输入有误,导致cin错误而关闭,缓冲区里面还有数据,导致一直从缓冲区里面取数据。
[解决办法]
可以在代码加上这个判断
if (!cin)
{
cout<<"输入有误"<<endl;
cin.clear();
cin.sync(); //清空缓冲区
}
[解决办法]
a是int型数据,输入字母时,cin无法接收,所以字母一直存在缓冲区中,而等下次循环至cin时,因为缓冲区有数据故cin又会尝试接收...