我将C ++ streambuf
类用于编译器项目,并且需要一种方便的方法来获取流中的当前位置。
有两个成员函数streambuf::pubseekpos
和一个streambuf::pubseekoff
来修改位置,我对于缺少streambuf::pubgetpos
成员函数(或类似的东西)而感到困惑它
似乎有两种可能的解决方法:
我可以将当前位置保存在单独的变量中并进行修改 每当我从流中读取字符时手动操作。
我可以致电streambuf::pubseekoff(0, ios_base::cur)
,然后返回
新流位置。
第二个选项似乎可用,但对于这样一个微不足道的任务来说效率低且不美观。有没有更好的方法呢?
答案 0 :(得分:6)
streambuf
没有用于读取位置的单独界面。但是,istream
和ostream
分别(tellg
和tellp
)。
有趣的是,流use your option 2来获取他们的位置,所以它很好。