我调查了如果缓冲区中没有足够的空间,则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/