【发布时间】:2013-03-09 15:15:17
【问题描述】:
我将 C++ streambuf 类用于编译器项目,需要一种方便的方法来获取流中的当前位置。
有两个成员函数 streambuf::pubseekpos 和 streambuf::pubseekoff 来修改位置,我很困惑没有 streambuf::pubgetpos 成员函数(或类似的东西)来阅读它。
似乎有两种可能的解决方法:
我可以将当前位置保存在一个单独的变量中并修改 每当我从流中读取字符时,它都会手动进行。
我可以调用
streambuf::pubseekoff(0, ios_base::cur),它会返回 新的流位置。
对于这样一个微不足道的任务,第二个选项似乎有用但效率低且不美观。有没有更好的方法?
【问题讨论】:
-
选项 2,无论是否低效,似乎都是一个不错的选择。当谈到 C++ 时,我不会关心美学。 :) 也许 streambuf 的 API 是一个最小的 API。