C++的cin输入错误导致死循环

举报
花狗Fdog 发表于 2021/03/25 22:36:25 2021/03/25
【摘要】 C++的cin输入错误导致死循环 今天在写代码的时候遇到一个bug,也是在无意中发现的,当我乱输入的时候(乱敲键盘那种),程序会出现死循环。 简版: int a = 0; while(true) { cout <<"请输入数字"<< endl; cin>>a; } 123456 看似一段简单的代码,当胡乱输入的时候就会导致程序死循环,无限打印“请输入数字”。 ...

C++的cin输入错误导致死循环

今天在写代码的时候遇到一个bug,也是在无意中发现的,当我乱输入的时候(乱敲键盘那种),程序会出现死循环。

简版:

int a = 0;
while(true)
{ cout <<"请输入数字"<< endl; cin>>a;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

看似一段简单的代码,当胡乱输入的时候就会导致程序死循环,无限打印“请输入数字”。

解决方法如下:

int a; while(cin.fail())
{
	cout <<"请输入数字"<< endl;
	cin >> a; cin.clear();  //cin.clear()作用是清除cin的错误状态
	cin.ignore(); //cin.ignore()作用是忽略掉缓冲区的内容,直到遇到EOF为止
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

网上还有使用cin.fail的。

cin.fail()是判断cin的状态的,如果cin为错误状态则返回1,正常状态则返回0

目前我没有使用这个,但死循环确实不存在了。

文章来源: blog.csdn.net,作者:花狗Fdog,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Fdog_/article/details/107476550

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。