2010-03-25 1 views
0

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

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

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

ответ

4

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

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

или (с FILE *)

fseek(f, 101 * n, SEEK_SET); 

Если вы не уверены в каких-либо предварительных условиях, используйте петлю.

0

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

ifstream is("test.txt"); 
is.seekg ((n-1)*100, ios::beg); // move the get pointer to the beg of nth record. 
Смежные вопросы