Как получить прямой доступ к определенной части текстового файла в g ++? - PullRequest
0 голосов
/ 25 марта 2010

У меня есть текстовый файл, содержащий несколько записей. Каждая запись хранится в одной строке длиной 100 символов.

Допустим, я хочу получить прямой доступ к n-й записи. Я мог бы сделать это, используя цикл for, читая n строк, пока не доберусь до записи.

Но как я могу получить к нему прямой доступ?

Ответы [ 2 ]

4 голосов
/ 25 марта 2010

Если длина каждой строки ровно 100 символов, а конец строки всегда равен \n (т. Е. Нет \r\n вещи), и нет пустых строк, и люди не будут использовать 1 вкладку для 8 пробелов и т. Д., Вы можете использовать (с ifstream)

fin.seekg(101 * n, ios::beg);  // Assume the initial record has n=0.

или (с ФАЙЛОМ *)

fseek(f, 101 * n, SEEK_SET);

Если вы не уверены ни в одном из предварительных условий, используйте цикл.

0 голосов
/ 25 марта 2010

Вы можете использовать функцию seekg :

ifstream is("test.txt");
is.seekg ( (n-1)*100, ios::beg); // move the get pointer to the beg of nth record.
...