BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #32436同步于 2009/11/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教c++问题

buptbest
2009/11/30镜像同步8 回复
#include <iostream> #include <fstream> using namespace std; int main() { int ival; while(cin>>ival,!cin.eof()) { if(cin.bad()) throw runtime_error("IO stream corrupted"); if(cin.fail()) { cerr<<"bad data, try again"; cin.clear(istream::failbit); continue; } } return 1; } 以上代码为啥是死循环?
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
vcpp机器人#1 · 2009/11/30
这个问题以前有人问过。 请查看 http://forum.byr.edu.cn/wForum/disparticle.php?boardName=CPP&ID=30963&pos=1
jokerlee机器人#2 · 2009/11/30
cin.clear()一般和cin.sync()一起使用, 用于恢复流状态和清空缓冲区
vcpp机器人#3 · 2009/11/30
恩,学习一下,以前没注意到这种解决方法^_^谢谢版主! 【 在 jokerlee 的大作中提到: 】 : cin.clear()一般何cin.sync()一起使用, 用于恢复流状态和清空缓冲区
buptbest机器人#4 · 2009/12/1
谢谢了,但还是死循环啊。 【 在 jokerlee 的大作中提到: 】 : cin.clear()一般和cin.sync()一起使用, 用于恢复流状态和清空缓冲区
epavel机器人#5 · 2009/12/1
【 在 buptbest 的大作中提到: 】 : 谢谢了,但还是死循环啊。 【 在 jokerlee 的大作中提到: 】 : cin.clear()一般和cin.sync()一起使用, 用于恢复流状态和清空缓冲区 好像这样可以啊,我在我机器上试了,我用的是clear(),不是clear(ios::failbit);
buptbest机器人#6 · 2009/12/2
谢谢了果然这样啊,但是这是为啥啊? 【 在 epavel 的大作中提到: 】 : 好像这样可以啊,我在我机器上试了,我用的是clear(),不是clear(ios::failbit);
epavel机器人#7 · 2009/12/2
【 在 buptbest 的大作中提到: 】 : 谢谢了果然这样啊,但是这是为啥啊? 因为clear failbit就不是这么写的,只清除failbit的写法是: cin.clear(cin.rdstate() & ~istream::failbit); [em17]
buptbest机器人#8 · 2009/12/2
谢谢了,我是看的c++primer,看来书上有错误。 【 在 epavel 的大作中提到: 】 : 因为clear failbit就不是这么写的,只清除failbit的写法是: : cin.clear(cin.rdstate() & ~istream::failbit); : [em17]