完全なファイルの内容を文字のベクトルに読み込むことに関するistream_iterators を使用したベクトルの構築を読んでいました。ファイルの一部を文字のベクトルにロードしたいのですが。
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
ifstream ifs(argv[1], ios::binary);
istreambuf_iterator<char> beginItr(ifs);
istreambuf_iterator<char> endItr(beginItr);
advance(endItr, 4);
vector<char> data(beginItr, endItr);
for_each(data.cbegin(), data.cend(), [](char ch)
{
cout << ch << endl;
});
}
前述の質問の受け入れられた回答は機能しますが、事前は機能しないため、これは機能しません。事前に機能しないのはなぜistreambuf_iterator
ですか?
また
endItr++;
endItr++;
endItr++;
endItr++;
cout << distance(beginItr, endItr) << endl;
0 を返します。何が起こっているのか誰か説明してください!