5

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

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

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

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

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

对于这样一个微不足道的任务,第二个选项似乎有用但效率低下且不美观。有更好的方法吗?

4

1 回答 1

7

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

有趣的是,流使用您的选项 2来获取他们的位置,所以这很好。

于 2013-03-20T13:55:37.370 回答