将 iostreams 提升input_seekable源

Boost iostreams input_seekable source

提问人:Gustavo 提问时间:6/7/2023 更新时间:6/7/2023 访问量:47

问:

我正在尝试使用升压 iostreams 实现input_seekable源。源使用来自 char 数组的固定数据。到目前为止,读取有效,但我的搜索功能有问题。

文档 https://www.boost.org/doc/libs/1_75_0/libs/iostreams/doc/index.html 显示了实现 seek 函数的容器设备的示例。假设我需要从具有实现源的流缓冲区构造一个 istream,并且我使用 seekg(0, std::ios_base::end) 到达流的末尾以使用 tellg() 作为流大小。

tellg() 的预期行为是什么?据了解,seekg(0, std::ios_base::end) 会将读取指针放在缓冲区中的最后一个元素之后,因此 tellg 将返回流中的字节数。文档的实现指向最后一个元素,这将导致 tellg 报告错误的字节数。

C++ IOSTREAM 提升-IOstreams

评论


答:

0赞 Alan Birtles 6/7/2023 #1

你不需要实现 ,返回当前偏移量,因此 iostreams 实现为 。tellgseektellgseek(0, std::ios_base::cur)

https://www.boost.org/doc/libs/1_75_0/libs/iostreams/doc/concepts/seekable_device.html

评论

0赞 Gustavo 6/7/2023
我没有实现 tellg,而是像我提供的链接一样寻求。问题在于我对读取指针的理解以及如何实现寻道。