为了账号安全,请及时绑定邮箱和手机立即绑定

为什么eof ctrl+d模拟工作不正常?

为什么eof ctrl+d模拟工作不正常?

白衣染霜花 2019-04-16 20:26:59
下面一段C++测试代码,whileloop使用eof来跳出循环。strings1;while(cin>>s1){cout
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

自己测试我到原因了。
因为EOF一直都在cinstream里面,clear()之后每次cin读入都是读入EOF,自然统统出错。
google了很久都没有找到flushterminalEOF的方法。有没有建议怎么flushterminalEOF?还是C++根本就没有这个选项,需要继续测试只能另开一个工程?谢谢!
update:
找到方法了。结合下面两个函数就可以flusheof,然后继续接受输入。
cin.clear();
clearerr(stdin);//combinewithcin.clear()andclearerr(stdin)works!
                            
查看完整回答
反对 回复 2019-04-16
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

在win下使用MSYS32上测试没有问题
代码跟你一样
使用cin.clear();
而且官方istream::clear的相关说明有讲到可以设置eofbit为false
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信