c++中的流问题??

来源:百度知道 编辑:UC知道 时间:2024/09/28 11:23:53
#include<iostream.h>
#include<stdlib.h>

int main()
{
int ival;
while(cin>>ival,!cin.eof())
{
if(cin.bad())
{
exit(1);
}
if(cin.fail())
{
cerr<<"bad date";
cin.clear(istream::failbit);

continue;
}
cout<<ival<<endl;
}
return 0;
}
为什么输入错误后老是输出bad date;
我不是设了cin.clear(istream::failbit)了

补充一下,就算你
cerr<<"bad date";
cin.clear();

了之后,继续读仍然是流fail,因为bad date仍然被留在输入流中,所以你应该加一句:

cerr<<"bad date";
cin.clear();
cin.ignore(1024, ' ');

至于cin.ignore的用法我就不解释了,自己查一下吧。另外罗嗦一句,#include <iostream.h>,这老东西还是丢了吧,如果你觉得有什么问题的话,我想你应该refresh一下你的C++知识了。