streambuf得到streampos

use*_*941 4 c++ stl stream streambuf

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

有两个成员函数,streambuf::pubseekpos和一个streambuf::pubseekoff,来修改位置,我很困惑没有streambuf::pubgetpos成员函数(或类似的东西)来阅读它.

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

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

  2. 我可以调用streambuf::pubseekoff(0, ios_base::cur),返回新的流位置.

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

Bo *_*son 6

streambuf没有一个单独的接口读取位置.然而,istreamostream做(tellgtellp分别).

有趣的是,流使用你的选项2来获得他们的位置,所以它很好.