[英]ifstream how to start read line from a particular line using c++
我正在使用ifstream
解析C ++代碼中的文件。 我無法使用seekg()
和tellg()
跳轉到代碼的特定行。
特別是,我想使用getLine方法從文件的特定位置讀取一行。 位置保存在先前的迭代中。
您只需要跳過所需的行數。 最好的方法是使用std :: istream :: ignore忽略字符串
for (int currLineNumber = 0; currLineNumber < startLineNumber; ++currLineNumber){
if (addressesFile.ignore(numeric_limits<streamsize>::max(), addressesFile.widen('\n'))){
//just skipping the line
} else {
// todo: handle the error
}
}
第一個參數是要提取的最大字符數。 如果這恰好是numeric_limits :: max(),則沒有限制。
由於性能更好,因此應使用is代替std :: getline。
似乎沒有滿足您需要的特定C ++函數,例如“ seekline”,我看到了兩種解決此任務的方法:
seekg
。 如果文本文件符合其大小要求,則第一種情況會更有效。 第二種情況為長文本文件和罕見的編輯操作帶來了最佳性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.