33,311
社区成员
发帖
与我相关
我的任务
分享
//get.h
#include<iostream>
std::istream &get(std::istream &in)
{
int ival;
while(in>>ival,!in.eof())
{ //遇到文件结束符之前一直读入数据
if(in.bad()) //出现系统级故障
throw std::runtime_error("IO stream corrupted");
if(in.fail()) //出现可恢复错误
{
std::cerr<<"bad data,try again"; //提示用户
in.clear(); //恢复流
in.ignore(200,' '); //跳过类型非法的输入项
continue; //继续读入数据
}
//读入正常
std::cout<<ival<<" ";
}
in.clear();
return in;
}
//8-4.cpp
//主函数以cin为实参调用get函数
#include"get.h"
#include<iostream>
using namespace std;
int main()
{
double dval;
get(cin);
cin>>dval; //重新使用恢复后的流
cout<<dval<<endl;
return 0;
}