2016-12-06 3 views
-2

Я хотел бы, чтобы прочитать текстовый файл в C++ в следующем порядке:Чтение строки из текстового файла с определенной позиции в C++

  1. игнор всю первую линию, как это просто означает, как введение.
  2. Только прочитайте следующие строки из определенного положения.

Эта начальная позиция для чтения является фиксированной и остается неизменной для каждой линии; однако числа после этого могут иметь переменную длину. Мне нужно сохранить все эти числа из строки 2 в строку n в массив. На данный момент я могу прочитать обычный 2D-массив с getline. Как я могу обойти эти вещи?

Пример для линии Я хочу, чтобы читать мог быть:

PERSON1: 25 988,3 0,0023 7

ответ

0

Для установки файла в позицию, используйте std::ifstream::seekg().

Чтобы установить файл в начало строки, вы должны прочитать и подсчитать окончание строки. Многие текстовые файлы имеют текстовые строки переменной длины.

+0

Могу ли я спросить, как реализовать функцию 'seekg()'? На данный момент я использую 'while'-loop с' getline' для чтения массива только с числами. – MusashiButter

+0

В методе On необходимо прочитать весь файл, используя 'std :: getline'; но перед использованием 'std :: getline', используйте' std :: ifstream :: tellg() ', чтобы получить позицию файла в текстовой строке. Сохраните позицию файла в 'std :: vector'. Это позволит вам получить начальную позицию каждой строки в файле. –

0

Как я могу обойти эти вещи?

Вы не можете, если не можете гарантировать, что все строки данных после первой строки имеют одинаковую длину.

Если вы не можете гарантировать, что все, что вы можете сделать, это прочитать все предыдущие строки.

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

Смежные вопросы