一次性读入文件全部内容

#include<iostream>

#include<fstream>

using namespace std;

 

int main()

{

     filename = "test.txt";

     filebuf fin;

     fin.open(filename.c_str(), ios::in);

     istream isInput(&fin);

     istreambuf_iterator<char> bit(isInput), eit;

     string content(bit, eit);   // content 为filename的全部内容

     cout << content << endl; 

 

     return 0;

}

 

 

优化方法:

 

#include <iostream>

#include <fstream>
using namespace std;

 

int main()

{

      string filename = "test.txt";

      ifstream inFile(filename, ios::in|ios::end);        

      size_t filelen= inFile.tellg();

      inFile.seekg(0);

      //string content((istreambuf_iterator<char>(inFile)), istreambuf_iterator<char>()); // 如果文件内容比较短,可以直接用这种方法

      string content;

      content.reserve(filelen); //一次性申请足够空间

      content.assign(istreambuf_iterator<char>(inFile), istreambuf_iterator<char>());

      cout << content << endl;

      return 0;

}

     

 

参考另一篇《 stringstream 的用法介绍》有其它详细方法的介绍。

 

 

 

你可能感兴趣的:(ios,优化,String)