int a; cout<<"输入:"; cin>>a; cout<<a<<endl; 当输入非数字时,为什么会出现死循环、怎么解决?

 我来答
松甜恬0Je4ba
2011-11-02 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3461万
展开全部
这个问题比较常见,因为输入一个字母后,此字符始终在缓冲区内(在上述情况下不会被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;
追神圣
2011-11-02 · TA获得超过6348个赞
知道小有建树答主
回答量:877
采纳率:0%
帮助的人:425万
展开全部
因为你定义的a是一个整形常数啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Neu_Vampire
2011-11-02
知道答主
回答量:6
采纳率:0%
帮助的人:3.7万
展开全部
因为a是一个int变量,只能存储数字,并且还有范围。
如果想要输入一个字符可以把a的类型改为char。
如果想要输入字符串的话,可以把a改成string(要导入string.h)。
追问
我是想实现,在输入非数字时怎么提示输入错误、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式