P249,习题8.3
// 标准IO库.cpp
//P245
#include <iostream>
using namespace std;
istream& fun(istream& in){
int n;
while(in>>n,!in.eof()){
if(in.bad()) // 系统级别故障,不可恢复,流不能继续使用,只能退出
throw runtime_error("IO stream corrupted");
if(in.fail())// 错误,但可以恢复
{
cerr<<"bad data, try again"<<endl;
in.clear(istream::goodbit);
in.ignore(10,' ');// 流设置为goodbit后,可以继续输入了,但是会忽略掉输入的10个字符,
// 这10个字符包括前面输入的错误的字符,所以一般要大点 in.igore(200,' ');
// 一次性把前面的错误输入(超过10个)忽略掉
continue;
}
cout<<n<<"******"<<endl;;
}
in.clear(); // 重置流的状态为有效状态
return in;
}
void main()
{
int v=-1;
fun(cin);
cin>>v;
cout<<"v = "<<v<<endl;
}
ctrl + z + 回车 作为 windows 下单 EOF ...效果不怎么的, 不知道怎么回事.暂且不管,后面的v的输出也不对...