#ifndef _GET_ H
#define _GET_ H
#include <iostream>
std::istream& get(std::istream& in);
#endif
#include "get.h"
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. " << std::endl;
in.clear();
in.ignore(200,'\n');
continue;
}
std::cout << "输入的数据:" << ival << std::endl;
}
in.clear();
return in;
}
#include <iostream>
#include <fstream>
#include <string>
#include "get.h"
using namespace std;
ifstream& open_file(ifstream &in, const string &file)
{
in.close();
in.clear();
in.open(file.c_str()); // C风格的字符串打开流文件,
return in;
}
int main ()
{
string fileName, s;
cout << "Enter filename: " << endl;
cin >> fileName;
ifstream inFile; // 创建一个流对象,
// inFile.open(...);
if(!open_file(inFile,fileName)) // (流和文件的名称),
{
cout << "error: can not open file " << fileName << endl;
return -1;
}
// 读取文件的内容,
get(inFile);
inFile.close();
return 0;
}