关于C++的流有点问题
#include <iostream>using namespace std;
int main ()
{
double dval;
istream& get (istream &in);
get(cin);
cin>>dval;
cout<<dval<<endl;
return 0;
}
istream& get (istream &in)
{
int ival;
while (in>>ival, !in.eof())
{
if (in.bad())
throw runtime_error("流出现问题");
if (in.fail())
{
cerr<<"数据有误,清重试";
in.clear(istream::failbit);
in.ignore(200,' ');
continue;
}
cout<<ival<<" ";
}
in.clear ();
return in;
}
这是我写的C++primer这本书里的一个小程序,稍微做了改动,关于流方面,我输入的时候打了ssdf这些字符进去以后, if (in.fail())指出了失败的io操作,然后输出数据有误,请重试,在此之后不是进行了流fail位的重置吗,应该这样是可以继续输入的吧,可是这样就进入死循环下去了,似乎流没有重置一样。还有那个ignore函数,我不太理解是什么意思,如果按照这上面写的这样,不是永远都无法跳出while的循环了吗?求大神指点迷津