fstream から正確に 128 バイトを文字列オブジェクトに読み込むにはどうすればよいですか?
ファイルの最初の 128 バイトを読み取って出力し、次にファイルの最後の 128 バイトを読み取って出力するコードを書きました。EOF まで簡単に反復できるため、最後の部分は機能しますが、先頭から正確に 128 バイトを取得するにはどうすればよいでしょうか? ifstream イテレータに 128 を追加できないため、以下のコードは機能しません。インデックス化できず、インクリメントのみ可能です (らしい)。
確かに、イテレータと *++ を 128 回作成することはできますが、それを行うには 1 行の簡単な方法が必要ですよね?
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char **argv)
{
std::ifstream ifs ("input.txt",std::ifstream::in | std::ifstream::binary);
if (ifs.good())
{
// read first 128 bytes into a string
ifs.seekg(0,std::ifstream::beg);
std::string first128((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>(ifs))+128);
std::cout << first128 << std::endl;
// read last 128 bytes into a string
ifs.seekg(-128,std::ifstream::end);
std::string last128((std::istreambuf_iterator<char>(ifs)),
std::istreambuf_iterator<char>());
std::cout << last128 << std::endl;
return 0;
}
return 1;
}