假设我想使用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
.