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(); とするとコンソールにファイルの内容が出力されます。
参考: