49

C++ のバッファ内のファイルの内容全体を読み取る良い方法は何ですか?

プレーンな CI ではfopen(), fseek(), fread()関数の組み合わせを使用してファイル全体をバッファーに読み込むことができますが、C++ でも同じことを使用することをお勧めしますか? はいの場合、開いている間、バッファにメモリを割り当てている間、ファイルの内容を読み込んでバッファに読み込んでいるときに、どうすればRAIIアプローチを使用できますか。

デストラクタで(バッファに割り当てられた)メモリの割り当てを解除するバッファ用のラッパークラスと、ファイル処理用の同じラッパーを作成する必要がありますか?

4

3 に答える 3

85

非常に基本的な機能のラッパー クラスは必要ありません。

std::ifstream file("myfile", std::ios::binary | std::ios::ate);
std::streamsize size = file.tellg();
file.seekg(0, std::ios::beg);

std::vector<char> buffer(size);
if (file.read(buffer.data(), size))
{
    /* worked! */
}
于 2013-09-15T18:55:23.017 に答える