我可以处理一个isstrstream来获得对底层I /o缓冲区的随机搜索吗?

Can I treat an isstrstream to obtain random seeks into an underlying i/o buffer?

本文关键字:缓冲区 搜索 随机 处理 一个 isstrstream 我可以      更新时间:2023-10-16

我的代码将读取整个文件到缓冲区中。就我的目的而言,我可以保证这样一个文件的大小不会超过10MB……足够小,我们永远不需要担心在读取整个文件时的抖动或实际性能问题。

此外,我目前在得到的整个文件缓冲区上使用isstrstream每次提取一行。这工作得很漂亮,并且允许我一次一行地使用底层字符串数据。

然而,我现在需要看看我是否可以保存当前的isstrstream位置,然后"跳转到那里"…也就是说,复制一个isstrsteam并将其视为值对象。是否允许/保证这是isstrstreams的合理使用?

如果它重要,我使用VS2010。

另外,你如何查找类似这样的答案(除了stackoverflow)?通过一些google搜索,我发现了许多关于isstrsteam各个方法的随机数据点,并得到了有关相关类(基类、兄弟类或子类)的各种信息。

可以使用成员istream<>::tellg()和istream<>::seekg()来保存/恢复流位置,类似于fgetpos和fsetpos。

istrstream和istringstream都支持这些方法。