cin读取失败 死循环
来源:互联网 发布:不孕不育网络咨询 编辑:程序博客网 时间:2024/06/10 03:44
【问题】:
#include <iostream>
using namespace std;
int main()
{
int a;
while(1)
{
cin>>data;
if(data==0)
break;
}
return 0;
}
如果以上代码的程序运行时,输入的数不是整数,而是字符,则cin就会出错,导致while死循环
【原因分析】:
当cin尝试将输入的字符读为int型数据失败后,会产生一个错误状态cin.fail()。
而要用cin读取输入流中的数据,输入流必须处于无错误状态。因此,由于错误状态的存在,会一直执行while循环。
【解决办法】:
while(1)
{
if (!cin.fail())
{
cout<<"input"<<endl;
cin>>data;
}
else
{
cin.clear();//清除std::cin的错误状态
cin.sync();//清空输入缓冲区
cout<<"input again"<<endl;
cin>>data;
}
if (data==0)
{
break;
}
}
- cin读取失败 死循环
- 死循环中的cin
- C++ primer cin.clear(istream::failbit) 重置失败 陷入死循环
- 用 cin 输入整数死循环问题
- 读取数据库的死循环
- 解决scanf或者cin造成的死循环问题
- while (cin>>str)退出死循环
- C++ cin.clear()的使用:防止出现死循环
- 在循环里面cin>>a输入不合法数据导致死循环
- 【C++】读取循环数字和cin的利用
- scanf和cin输入类型不匹配时造成的死循环问题
- c++ cin一个整数 输入其它字符产生死循环错误的解决方法。
- 解决cin因为输入错误的数据类型进入死循环的问题
- osx平台调用curl_multi_exec失败脚本死循环
- SVN CleanUp失败陷入死循环的解决办法
- 死循环
- 死循环
- 死循环
- PS
- 下拉列表取值的小技巧
- 关于结构体的大小讨论
- 一封写给自己的信
- Tomcat提示 Unable to open the service ‘tomcat6’
- cin读取失败 死循环
- java学习
- 今天申请了CSDN
- work
- 姑娘我爱你
- C
- CSDN的学生页面没有排版好!!!有图有真相
- static
- 形象