![](/img/trans.png)
[英]What is the difference between std::ifstream::in and std::ios::in? (obviously as an openmode flag for an std::ifstream in C++)
[英]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.