cin读取失败后进入死循环

cin读取失败后进入死循环

ID:38581890

大小:62.00 KB

页数:10页

时间:2019-06-15

cin读取失败后进入死循环_第1页
cin读取失败后进入死循环_第2页
cin读取失败后进入死循环_第3页
cin读取失败后进入死循环_第4页
cin读取失败后进入死循环_第5页
资源描述:

《cin读取失败后进入死循环》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、cin读取失败后进入死循环?-------剖析输入流的条件考虑如下代码: #include using namespace std;int main(){  int a;  while(cout<<"input a integer (1- 10) :",cin>>a,! (a>=1 && a<=10))   cout<<"try again!"<

2、,程序会正确的执行,并且提示用户重新输入。但是如果用户错误的输入了一个字符char,那么,后果就是一直执行while循环!错误分析:当cin尝试将输入的字符读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。因此,由于错误状态的存在,会一直执行while循环。错误修正:#includeusingnamespacestd;intmain(){inta;while(cout<<"inputainteger(1-10):",

3、cin>>a,!(a>=1&&a<=10)

4、

5、cin.fail()){  cout<<"tryagain!"<

6、存,下次在读取数据的时候又会再次产生错误,也会陷入死循环。cin输入流错误2010-09-0621:38事先声明,这个帖子不是我写的,不过,这点知识我觉得比较重要,转来了呵呵大家可以配合这个帖子学习一下这方面这是我搜集的相关的输入流异常处理知识(感兴趣的友友可以看看哈):很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(),cin.ignore(),cin.fail(),cin.go

7、od()等等),如果没有很好的掌握,在使用的时候很可能会出问题却不知其原因!而且很多人也确确实实遇到过不少问题,以下是几个简单的例子:程序1:#includeusingnamespacestd;intmain(){  intm,n;        cin>>m;    cin>>n;  return0;}测试情况:如果用户每次都输入两个合法的数,程序不会出问题!但是如果用户第一次输入时给一个非法的输入,比如说输入一个字符'a',你会发现程序不会再执行第二条输入语句。似乎有点奇怪!!程序2:#

8、includeusingnamespacestd;intmain(){     charstr[8];    cin.getline(str,5);   cout<

9、常!测试二:abcdefgh(回车)abcd(输出)   (输出-换行)当用户第一次输入的字符数字符数大于4时,第一个字符串接受输入的前四个字符,而第二次的输入操作没有执行,第二个字符串输出为空。似乎也很奇怪!!!其实在很多时候都会遇到诸如此类的问题,如果不熟悉程序输入的原理和cin等一些函数的原理就不知道怎么解决!我在这里做一个简单的介绍,也许介绍得不是很准确和全面,或者存在一些误解,请大家包涵!输入操作的原理与前一节中提到的scanf函数一样,程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,

10、当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是例子中为什么会出现输入语句失效的原因!cin的一些输入函数和操作符cinisaexternistreamobject。提供了很多可用的成员函数和重载的操作符,如:cin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。