streambuf得到streampos

时间:2013-03-20 13:32:34

标签: c++ stl stream streambuf

我将C ++ streambuf类用于编译器项目,并且需要一种方便的方法来获取流中的当前位置。

有两个成员函数streambuf::pubseekpos和一个streambuf::pubseekoff来修改位置,我对于缺少streambuf::pubgetpos成员函数(或类似的东西)而感到困惑它

似乎有两种可能的解决方法:

  1. 我可以将当​​前位置保存在单独的变量中并进行修改 每当我从流中读取字符时手动操作。

  2. 我可以致电streambuf::pubseekoff(0, ios_base::cur),然后返回 新流位置。

  3. 第二个选项似乎可用,但对于这样一个微不足道的任务来说效率低且不美观。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:6)

streambuf没有用于读取位置的单独界面。但是,istreamostream分别(tellgtellp)。

有趣的是,流use your option 2来获取他们的位置,所以它很好。