【问题标题】:How to move the pointer of istream by n characters?如何将 istream 的指针移动 n 个字符?
【发布时间】:2011-06-19 17:10:13
【问题描述】:

我想在两个 istream getlines 之间跳过二进制文件中的几个字符。最好的方法是什么?

Shell 我刚刚用 istream::read 读入了一个虚拟变量?

或者我使用 n = istream::tellg 和 istream::seekg = n + 1000 的 shell?

【问题讨论】:

  • 距离当前位置仅seekgstd::ios::cur
  • @Kerrek:这应该是答案。将其发布为答案。你会得到代表;-)
  • 是的,如果我没记错的话,您不能依赖从tellg 返回的数字以任何方式有意义,并且对其进行数学运算并在随后的seekg 中使用结果未定义的结果。事实证明我错了,我把一些关于 stdio 的事实与 iostream 混为一谈。
  • @Nawaz:看来是这样,谢谢!没有低估的赞成票 ;-)(有时我会害羞地发布一个单行答案。)

标签: c++ binaryfiles


【解决方案1】:

您可以使用std::ios::cur 位置参数简单地相对于当前位置移动流位置:

std::ifstream f("myfile.txt");   // current position 0
f.seekg(200, std::ios::cur);     // relative seek

也允许使用负值。参见例如here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多