Нет, вам не нужно использовать 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
return HandleReadingLineError(addressesFile, currLineNumber);
}
HandleReadingLineError - это не стандартная, а ручная работа , конечно.
Первый параметр - это максимальное количество символов для извлечения. Если это точно numeric_limits :: max (), ограничений нет:
Ссылка на cplusplus.com: std :: istream :: ignore
Если вы собираетесь пропустить много строк, вам определенно следует использовать его вместо getline: когда мне нужно было пропустить 100000 строк в моем файле, это заняло около секунды вместо 22 секунд с getline.