簡體   English   中英

尋求或忽略更有效嗎?

[英]Is seekg or ignore more efficient?

我正在使用C ++編寫一個對時間非常敏感的應用程序,因此效率至關重要。

我有一個std::ifstream ,並且我想跳過特定數量的字符(又名字節偏移,我沒有使用wchar_t )來到達特定行,而不是使用std::getline來讀取每一行,因為對我來說太低效了

使用seekgignore跳過指定數量的字符並從那里開始閱讀更好嗎?

size_t n = 100;
std::ifstream f("test");
f.seekg(n, std::ios_base::beg);
// vs.
f.ignore(n);

查看cplusplus.com上的兩個函數,似乎ignore將使用sbumpc或sgetc跳過請求的字符數。 這意味着它甚至可以在本身不支持跳過的流上工作(ifstream可以做到),但是它也可以處理每個字節。

seekg另一方面使用pubseekpos或pubseekoff,這是實現定義。 對於文件,這應該直接跳到所需位置,而不處理直到它的字節。

我希望seekg會更高效,但是正如其他人所說:對大文件進行自己的測試將是您的最佳選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM