关于C++ cin的问题
来源:互联网 发布:软件技术服务 编辑:程序博客网 时间:2024/05/04 21:10
在学习过程中,发现cin 的一点问题以及解决方案,这里记录下来,和大家共同讨论。
我遇到的问题在于:cin 不能重复使用。什么意思呢?假如我用下列代码
int x,y;while(cin>>x>>y)...
当输入的不是int,while循环结束。我们经常使用这种方式去控制输入流。
但是如果这样,当你在之后还需要使用cin
int z;cin>>z;
cin会失败,cin会直接被跳过
原因就是,当while循环结束时,也即 cin>>x>>y 失败时, cin会自动置为bad_bit(cin 有一个标记,标记输入流是否正常)
,也即cin失败
我原来是用 cin.clear() 函数,想要把bad_bit 重置为 good_bit,但是失败了,cin仍然失败。
网上查了并自己实践之后,给出了自己的解决方案
...cin.clear();cin.ignore(100,'\n');
首先把输入流的状态置为正常。然后忽略缓存区内的100个字符,或者直到回车’\n’ 前全部忽略。
原因:为什么cin.clear()不够呢,其实当你输入失败的时候,缓存区仍然保存了最后一次失败时输入的字符(假设为ch),也就是说,当你重置了输入流状态时,再次要求输入,系统会自动从缓存区提取ch,而这时的类型仍然不匹配。所以会再次失败。ignore会将缓存区的字符“忽略”,也即丢弃。100设为较大的数也可以。
有问题欢迎随时联系我~
0 0
- C++:关于while(cin>>str)无法结束的问题
- 关于cin输入的问题
- 关于C++ cin的问题
- 关于C++的cin.get()的问题
- 关于C++中cin.ignore()的问题
- 关于cin>>x的返回值问题
- 关于cin,和cin.getline()连用问题
- 关于c++ 的cin
- C++_Primer中关于cin.clear()的例题
- 关于用cin cin.get() getchar(), getline输入时的结束符问题
- C++:cin、cin.getline()、getline()的用法
- C++:cin\cin.getline()\getline()的用法
- 关于while(cin>>str)无法结束的问题.
- 关于while(cin>>str)无法结束的问题
- 关于while(cin>>str)无法结束的问题
- 关于while(cin>>str)无法结束的问题
- 关于输入流状态函数cin.eof()的问题
- 关于while(cin>>str)结束的问题 .
- windows下mysql zip版安装
- android的PreferenceActivity
- 工作日记20151211
- WebService:权限控制、拦截器
- Git使用教程
- 关于C++ cin的问题
- 字符编码
- Tea解密出错
- 升级oracle10.2.0.1 到oracle10.2.0.5.9
- 微信朋友圈技术之道:三个人的后台团队与每日十亿的发布量
- PHP学习2-基础学习-基本语法、变量
- 为什么说 DOM 操作很慢
- 比特培训 软件设计师视频 下载
- 51单片机AD转换之PCF8591