如何在不进行任何提取的情况下从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}}
答案 0 :(得分:1)
您只能peek
下一个字符而不提取。
因此,您应该更改策略:不是尝试避免提取,而是提取所需的字符,然后恢复流的状态。如果流支持搜索,则可以这样做:
tellg
获取当前位置seekg
跳转到较早的位置否则,您可能需要实现自己的缓冲区来执行“尝试不提取”所要实现的任何目标。