gpt4 book ai didi

c++ - 使用 std::ifstream,忽略字符和查找之间有区别吗?

转载 作者:可可西里 更新时间:2023-11-01 18:38:26 24 4
gpt4 key购买 nike

我能找到的所有文档都说 std::basic_istream<>::ignore(n) “提取并丢弃字符”,但这种提取的含义并不是很清楚。

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

否则,如果字符在被丢弃之前真的被“读取”,它看起来像ignore。当 seekg 时是一个糟糕的选择可用(例如,使用文件或字符串流)。

最佳答案

是的,有区别。

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

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

要应用此“优化”,您应该自己执行 seekg,注意不要搜索到流的末尾。

关于c++ - 使用 std::ifstream,忽略字符和查找之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com