如何从c ++ std :: istream中读取固定数量的字节

时间:2016-06-12 23:21:11

标签: c++ iostream

如何在不进行任何提取的情况下从sz读取固定数量的字节?例如,我有size_t类型的变量sizeof(size_t),我想从istream读取void foo(std::istream& is) { if(is.rdbuf()->in_avail() < sizeof(size_t)) return; // how to read to sz from istream is without extraction (advancing pointers) size_t sz; } 个字节。

{{1}}

1 个答案:

答案 0 :(得分:1)

您只能peek下一个字符而不提取。

因此,您应该更改策略:不是尝试避免提取,而是提取所需的字符,然后恢复流的状态。如果流支持搜索,则可以这样做:

  • 使用tellg获取当前位置
  • 提取字节
  • 使用seekg跳转到较早的位置

否则,您可能需要实现自己的缓冲区来执行“尝试不提取”所要实现的任何目标。