//********************************* //习题8.6 //********************************* #include <iostream> #include <fstream> #include <string> using namespace std; std::istream& get(std::istream &in) { int ival;//注意这里定义的为int while (in>>ival,!in.eof())//注意逗号表达式,前一个的返回值被忽略了 { if (in.bad())//出现系统级故障 { throw std::runtime_error("IO stream corrupted"); } if (in.fail())//出现可恢复错误 { std::cerr<<"bad data, try again/n"; in.clear();//恢复流 in.ignore(200,' ');//跳过类型非法的输入项 continue; } //读入正常 std::cout<<ival<<" "; } in.clear(); return in; } //测试函数 习题8.6 int main() { string fileName; cout<<"Enter file name:"<<endl; cin>>fileName; //创建ifstream对象并绑定到名为fileName的文件 ifstream inFile(fileName.c_str()); if (!inFile) { cerr<<"error: can not open input file:" <<fileName<<endl; return -1; } get(inFile); inFile.close(); cout<<endl; return 0; }