int a; cout<<"输入:"; cin>>a; cout<<a<<endl; 当输入非数字时,为什么会出现死循环、怎么解决?
3个回答
展开全部
这个问题比较常见,因为输入一个字母后,此字符始终在缓冲区内(在上述情况下不会被cin读出,因为是个字母而不是数字) 所以要避免死循环,可以调用cin.ignore(1000, '\n ');和cin.clear()。cin.clear()是清除输入流的状态,并不清除输入缓冲区。
即
int a; cout<<"输入:";
cin>>a;
if(cin.fail())
{
cin.clear();
cin.ignore(1000, '\n ');
cout<<"输入错误"<<endl;
}
cout<<a<<endl;
即
int a; cout<<"输入:";
cin>>a;
if(cin.fail())
{
cin.clear();
cin.ignore(1000, '\n ');
cout<<"输入错误"<<endl;
}
cout<<a<<endl;
展开全部
因为你定义的a是一个整形常数啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为a是一个int变量,只能存储数字,并且还有范围。
如果想要输入一个字符可以把a的类型改为char。
如果想要输入字符串的话,可以把a改成string(要导入string.h)。
如果想要输入一个字符可以把a的类型改为char。
如果想要输入字符串的话,可以把a改成string(要导入string.h)。
追问
我是想实现,在输入非数字时怎么提示输入错误、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询