我正在使用C ++编写一个对时间非常敏感的应用程序,因此效率至关重要。
我有一个std::ifstream
,并且我想跳过特定数量的字符(又名字节偏移,我没有使用wchar_t
)到达特定的行,而不是使用{{1 }}读取每一行,因为它对我来说效率太低。
使用std::getline
或seekg
跳过指定数量的字符并从那里开始阅读更好吗?
ignore
答案 0 :(得分:4)
在cplusplus.com上查看这两个函数,看来ignore
将使用sbumpc或sgetc跳过请求的字符数。这意味着它甚至可以在本身不支持跳过的流上工作(ifstream可以做到),但是它也可以处理每个字节。
seekg
使用pubseekpos或pubseekoff,这是实现定义的。对于文件,这应该直接跳到所需位置,而不处理字节为止。
我希望seekg
会更有效率,但是正如其他人所说:对大文件进行自己的测试将是您的最佳选择。