【发布时间】:2009-09-14 19:53:29
【问题描述】:
假设我想使用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 被阅读,有些则没有。例如,假设在编号为1-9 的文件中有9 bytes:
|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。
【问题讨论】: