このような質問がすでにあると思いましたが、見つかりませんでした。それで、ここに私の質問があります。
テキスト ファイル全体を文字列に読み込む最短の方法は何ですか? 最新の C++ 標準および標準ライブラリの機能のみを使用したい。
この一般的なタスクにはワンライナーが必要だと思います!
おそらくこれ:
std::ifstream fin("filename");
std::ostringstream oss;
oss << fin.rdbuf();
std::string file_contents = oss.str();
これもあります:
std::istreambuf_iterator<char> begin(fin), end;
std::string file_contents(begin, end);
これを提案する人もいるかもしれませんが、私はistreambuf_iterator<char>
一度だけ入力することを好みます。
std::string file_contents(std::istreambuf_iterator<char>{fin}, std::istreambuf_iterator<char>());
1つのステートメントを使用してファイルを読み込むにはstd::string
(1行に収まるかどうかは、行の長さによって異なります...)、次のようになります。
std::string value{
std::istreambuf_iterator<char>(
std::ifstream("file.txt").rdbuf()),
std::istreambuf_iterator<char>()};
残念ながら、このアプローチは、エクストラを使用するほど高速ではないことがよくありstd::ostringstream
ます(ただし、実際には高速である必要があります...)。