Скажите, что я хочу прочитать содержимое файла, используя basic_filebuf
. У меня есть тип с именем boost::uintmax_t
, который имеет размер 8 bytes
. Я пытаюсь написать следующее:
typedef basic_filebuf<uintmax_t> file;
typedef istreambuf_iterator<uintmax_t> ifile;
file f;
vector<uintmax_t> data, buf(2);
f.open("test.txt", std::ios::in | std::ios::binary);
f.pubsetbuf(&buf[0], 1024);
ifile start(&f), end;
while(start != end)
{
data.push_back(*start);
start++;
}
Проблема в том, что некоторые из bytes
читаются, другие нет. Например, допустим, в файле пронумеровано 9 bytes
1-9
:
|1|2|3|4|5|6|7|8|9|
Когда я запускаю приведенный выше код, только один элемент возвращается в data
, который содержит 4 bytes
только из исходных данных в f
:
[0|0|0|0|4|3|2|1] --> only element in [data]
Что я делаю не так? Я впервые использую basic_filebuf
напрямую, хотя я знаю, как использовать filebuf
.