/*
*编写函数打开文件用于输入,、
*将文件内容读入string类型的vector容器,
*每一行存储为该容器对象的一个元素
*/
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int fileToVector(string fileName, vector<string>& svec)
{
//创建ifstream对象inFile并绑定到由形参fineName指定的文件
ifstream inFile(fileName.c_str());
if(!inFile)
return 1;//打开文件失败
//将文件内容读入到string类型的vector容器
//每一行存储为该容器对象的一个元素
string s;
while(getline(inFile,s))
svec.push_back(s);
inFile.close ();//关闭文件
if(inFile.eof ())
return 4;
if(inFile.bad())
return 2;
if(inFile.fail())
return 3;
}
int main()
{
vector<string> svec;
string fileName,s;
//读入文件名
cout << "enter filename:" << endl;
cin >> fileName;
//处理文件
switch( fileToVector(fileName, svec))
{
case 1:
cout << "error :can not to open file :"
<< fileName << endl;
return -1;
case 2:
cout << "error:system failure"<< endl;
return -1;
case 3:
cout << "error:read failure" << endl;
return -1;
}
//使用istringstream从vector里每次读一个单词的形式读取所存储的行
string word;
istringstream isstream;
for(vector<string>::iterator iter =svec.begin();iter != svec.end();++iter)
{
//将vector对象的当前元素复制给istringstream对象
isstream.str(*iter);
//从istringstream对象中读取单词并输出
while(isstream >> word)
{
cout <<word << endl;
}
isstream.clear();//将istringstream流置为有效状态
}
system("pause");
return 0;
}