繁体   English   中英

使用std :: ifstream,忽略字符和搜索之间有区别吗?

[英]With an std::ifstream, is there a difference between ignoring characters and seeking?

我能找到的所有文档都说std::basic_istream<>::ignore(n) “提取并丢弃字符”,但是这个提取意味着什么并不十分清楚。

对于std::ifstream特别,可以实现使其等同于简单地seekg文件中-ing? 如果是这样,主流实现会这样做吗?

否则,如果字符在被丢弃之前确实被“读取”,那么当seekg可用时(例如,使用文件或字符串流),似乎ignore是一个糟糕的选择。

是的,有区别。

即使我们只考虑as-if规则,提取字符也会对流状态产生影响(考虑各种状态标志),我们可以从libstdc ++实现中看到,流的行为就好像调用者使用了提取的字符一样。

如果完全跳过字符有任何“优化”,则这种可观察的行为会有所不同。

要应用此“优化”,您应该自己执行seekg ,注意不要寻求超过流的末尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM