我调查了如果缓冲区中没有足够的空间,则ifstream::readsome(buf, size)方法不会读取所有字节。范例:

我有缓冲区:4096个字节。从文件开始的偏移量:6个字节。
我叫ifstream::readsome(buf, 4097)

函数的结果是4090。因此,如果我想读取其余七个字节,则必须调用
ifstream::readsome(buf + 4090, 7)

问题是:为什么以这种方式实现此功能?我看不到处理超出ifstream::readsome(buf, size)方法内部缓冲区的任何问题。

编译器:MSVC 11(VS 2012)

谢谢你的回答。

最佳答案

因为那是readsome的含义。它不调用streambuf上的任何虚拟功能(可能
块);它被定义为仅返回当前字符
在缓冲区中。

如果需要更多,则应使用read

关于c++ - ifstream::readsome问题。缓冲区超过,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15784540/

10-11 18:53