gpt4 book ai didi

c++ - 使用 fstream tellg 读取流的一部分直到结束

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:41 24 4
gpt4 key购买 nike

我有这个简单的代码,需要获取正在写入的大型日志文件的一部分。在某些时候,它存储从返回的当前位置streampos 开始 = istream::tellg();方法。稍后代码必须从流中读取一个从开始到结束的缓冲区。代码大概是这样的:

streampos start = my_stream.tellg();

... // do some stuff with logging

streampos end = my_stream.tellg();
const streamsize size_to_read = (end - start);
char *buf = new char[size_to_read];

lock (m_logReadLock);
{
my_stream.flush();
my_stream.seekg(start);
my_stream.read(buf, size_to_read);
size_read = my_stream->gcount();
}
unlock (m_logReadLock);

我观察到的效果是 size_read 小于 size_to_read 并且流设置了 eof 标志。结束指针不应该指定流结束的确切位置并且 read() 方法返回准确的数据量吗?没关系,我可以通过检查 eof 标志来解决它。但是,谁能解释一下这种效果?

谢谢。

最佳答案

您似乎在 stream_loc 而不是 my_stream 上调用 gcount

关于c++ - 使用 fstream tellg 读取流的一部分直到结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com