我在一个编译器项目中使用C++的streambuf类,需要一种方便的方法来获取流中的当前位置。
有两个成员函数streambuf::pubseekpos和streambuf::pubseekoff可用于修改位置,但我很困惑为什么没有streambuf::pubgetpos成员函数(或类似的函数)可以读取它。
似乎有两种可能的解决方法:
1.我可以将当前位置保存在单独的变量中,并在每次从流中读取字符时手动修改它。 2.我可以调用streambuf::pubseekoff(0, ios_base::cur),它会返回新的流位置
第二个选项似乎可用但对于这样一个微不足道的任务而言效率低下且不雅。是否有更好的方法呢?
有两个成员函数streambuf::pubseekpos和streambuf::pubseekoff可用于修改位置,但我很困惑为什么没有streambuf::pubgetpos成员函数(或类似的函数)可以读取它。
似乎有两种可能的解决方法:
1.我可以将当前位置保存在单独的变量中,并在每次从流中读取字符时手动修改它。 2.我可以调用streambuf::pubseekoff(0, ios_base::cur),它会返回新的流位置
第二个选项似乎可用但对于这样一个微不足道的任务而言效率低下且不雅。是否有更好的方法呢?