2015-02-01 2 views

ответ

0

Единственный способ сделать это - знать смещение (в байтах), где начинается третья строка.

Вы можете создать «индекс» для этого файла (один раз пропустите файл и сохраните позицию, где начинается каждая строка). Или, может быть, смещение можно рассчитать/угадать, если вы знаете, что все линии имеют одинаковую длину.

Без этого предварительного знания вы не можете прочитать строку с произвольным числом из файла.

+0

Да, все линии имеют одинаковую длину (около 1,5 мил и более строк), поэтому я считаю, что более эффективно вычислять смещение. Но как я могу рассчитать его, а затем как я могу использовать смещение для чтения строки. – stringlord

+0

Смещение должно быть n * (длина строки, включая символ конца строки). Установите позицию в файле на это смещение, используя 'fseek' или' seek' (в зависимости от того, как вы работаете с файлом), а затем прочитайте. – Inspired

0

Здесь п начинается 0

string line; 
for (streamsize i = 0; i <= n; i++) 
{ 
    if (! getline(myfile, line)) 
    { 
     // some issue occured, probably not enough lines 
    } 
} 

// line variable now contains line n 
Смежные вопросы