STLアルゴリズムを使用してこれを行うにはどうすればよいですか?copy_nまたはeofまで
std::ifstream file(filename);
std::vector<unsigned char> buf;
for(auto file_it = std::istreambuf_iterator<char>(file); file_it != std::istreambuf_iterator<char>() && buf.size() < 2048; ++file_it)
buf.push_back(*file_it);
注buf.size() < 2048
。
次のようにすれば、ファイルは2048バイトよりも小さくなりますが、どうなりますか?ドキュメントと同様に
std::copy_n(std::istreambuf_iterator<char>(file), 2048, std::back_inserter(buf));
ファイルが大きくなるとどうなりますか?残りの部分は破棄されていますか、まだ読み込まれている部分の先頭にイテレータが必要ですか? – pmr
必要なバイト数が読み込まれると、ifstreamは破棄されます。 – ronag
これは、アルゴリズムの代わりに独立したイテレータを持つ可能性を開きます。 – pmr