寻求或忽略更有效吗?

时间:2019-05-13 00:17:17

标签: c++ performance

我正在使用C ++编写一个对时间非常敏感的应用程序,因此效率至关重要。

我有一个std::ifstream,并且我想跳过特定数量的字符(又名字节偏移,我没有使用wchar_t)到达特定的行,而不是使用{{1 }}读取每一行,因为它对我来说效率太低。

使用std::getlineseekg跳过指定数量的字符并从那里开始阅读更好吗?

ignore

1 个答案:

答案 0 :(得分:4)

在cplusplus.com上查看这两个函数,看来ignore将使用sbumpc或sgetc跳过请求的字符数。这意味着它甚至可以在本身不支持跳过的流上工作(ifstream可以做到),但是它也可以处理每个字节。

另一方面,

seekg使用pubseekpos或pubseekoff,这是实现定义的。对于文件,这应该直接跳到所需位置,而不处理字节为止。

我希望seekg会更有效率,但是正如其他人所说:对大文件进行自己的测试将是您的最佳选择。