【问题标题】:streambuf get streamposstreambuf 获取流位置
【发布时间】:2013-03-09 15:15:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 选项 2,无论是否低效,似乎都是一个不错的选择。当谈到 C++ 时,我不会关心美学。 :) 也许 streambuf 的 API 是一个最小的 API。

标签: c++ stl stream streambuf


【解决方案1】:

streambuf 没有单独的接口来读取位置。但是,istreamostream 可以(分别为 tellgtellp)。

有趣的是,use your option 2 的流获得了他们的位置,所以这很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2022-01-07
    相关资源
    最近更新 更多