流缓冲区获取流位置

5
我在一个编译器项目中使用C++的streambuf类,需要一种方便的方法来获取流中的当前位置。
有两个成员函数streambuf::pubseekpos和streambuf::pubseekoff可用于修改位置,但我很困惑为什么没有streambuf::pubgetpos成员函数(或类似的函数)可以读取它。
似乎有两种可能的解决方法:
1.我可以将当前位置保存在单独的变量中,并在每次从流中读取字符时手动修改它。 2.我可以调用streambuf::pubseekoff(0, ios_base::cur),它会返回新的流位置
第二个选项似乎可用但对于这样一个微不足道的任务而言效率低下且不雅。是否有更好的方法呢?

选项2,无论是否低效,看起来都是一个不错的选择。当涉及到C++时,我不会关注美学方面的问题。也许streambuf的API是一个最小API。 - IAbstract
1个回答

7
streambuf没有单独的接口来读取位置。但是,istreamostream有(分别使用tellgtellp)。有趣的是,流使用选项2 来获取它们的位置,所以这没问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接