4.6

来源:互联网 发布:lol刷点卷软件免费版 编辑:程序博客网 时间:2024/06/05 04:43

/*
 *编写函数打开文件用于输入,、
 *将文件内容读入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;
}

 

原创粉丝点击