Создать индекс для файла. Вы можете сделать это «лениво», но, читая буфер, вы можете также сканировать его для каждого символа.
Если в Windows это текстовый файл, в котором используется 2-байтовый символ '\ n', то число символов, которые вы прочитали до точки, где начинается символ новой строки, не будет смещением. Так что вы должны делать поиск после каждого вызова getline ().
что-то вроде:
std::vector< off_t > lineNumbers;
std::string line;
lineNumbers.push_back(0); // first line begins at 0
while( std::getline( ifs, line ) )
{
lineNumbers.push_back(ifs.tellg());
}
последнее значение скажет вам, где находится EOF.