08.05.22 前の記事より良さそうなやり方が見つかったので、記事を書き替えました!



【サンプル】

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sstream>


using namespace std;


int main(int argc, char *argv[])
{


//ファイルをフルパスで指定します。

ifstream ifs("D:\\test.txt");
ostringstream oss;
string str;


//文字列ストリームにファイルの内容を出力
oss << ifs.rdbuf();
str = oss.str();


//内容出力
cout << str << endl;


system("PAUSE");
return EXIT_SUCCESS;


}


【出力】

123456789012345678901234567890



【説明】

ifstreamを使用するとファイルを読み込めます。

fopenを使用するよりずっと楽チンです。


まず、文字列ストリームのostringstreamですが、これはcoutのstring版みたいなものと思えばよいです。

<<を使用してデータを入れ込むことができます。

さて、stringクラスにファイルの内容を入れるには、

まず文字列ストリームにストリームバッファ(rdbuf()で取得)を入れ込みます。


実は、ストリーム系のクラスにはストリームバッファを入れ込むことができます。

ですので、上記のプログラムのようにするだけでファイルを取り込めます。


それから、文字列ストリームからstringを取り出すstr()関数を呼べば終わりです。


楽ですよね!


これがコードが少なくて、直感的に理解しやすいし、楽だと思います!



【補足】

ちなみに cout << ifs.rdbuf(); とするとコンソールにファイルの内容が出力されます。



参考:

ファイルの内容を効率よくstringに入れるには?
数字や文字列を次々に連結してstringに出力するには?