XamBEE Ответов: 2

Чтение txt файла строка за строкой


Я хочу читать файл (. txt) строка за строкой, но не в цикле while (один раз читая весь fle). В настоящее время я читаю файл один раз целиком. Но то, что я хочу сделать, это прочитать одну строку, чем вернуться к нормальной основной функции, чем позже вызвать
ReadDumpFile
и прочти следующую строчку. Любая помощь будет оценена по достоинству

Примечание:: строки в файле .txt не совпадают по размеру
Пример
5:50:12:560:434,    Rx, 7,  0x1E3,       00 80 2B 00 77 00 7D
5:50:12:560:615,    Ax, 4,  0x760,       00 12 84 41
5:50:12:560:826,    gc, 5,  0x2f1,       64 5A 43 20 4E



Функция чтения файла
readingLogFile(){
	
	QString LFileName = "P_1.trc";
    QFile logfile(LFileName );
      
      QTextStream in(&logfile);
      while (!in.atEnd())
      {
          QString fileLine = in.readLine(); //
          if(fileLine.trimmed().isEmpty()!=true)
          {
            qDebug()<<fileLine;
			             
              }
          }

	}


Что я уже пробовал:

Что я думаю, что мне нужно сделать,так это сохранить предыдущую строку в указателе. И чистое время предыдущего+1. но не знаю, как прочитать определенную строку внутри документа. если файл .txt содержит 1000000 строк. как я могу прочитать строку#670000 ???

2 Ответов

Рейтинг:
1

Mehdi Gholam

Видеть : getline (string) - ссылка на C++ [^]
и считайте линии, пока не доберетесь туда, куда хотите (так как у вас есть линии переменной длины).


XamBEE

Но я хочу избежать чтения строк (n-1), чтобы перейти к строке n

Mehdi Gholam

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

XamBEE

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

Mehdi Gholam

Прочитайте каждую строку и сохраните смещение указателя файла в массиве, сохраните этот массив на потом.

Sergey Alexandrovich Kryukov

5ед.
—СА

Mehdi Gholam

Ура, Сергей!

Рейтинг:
1

CPallini

Поскольку строки файла имеют разную длину, я вижу только два варианта, вы либо

  • Считывайте файл построчно (то есть вызывайте несколько раз getline).

или
  • Читайте файл большими кусками и пропускайте ненужные строки в памяти.


XamBEE

Не могли бы вы немного объяснить первые варианты? Я точно не знаю, как?

CPallini

Это что Мехди Голам уже предложил. Я знаю, что вам это не нравится, но нет никаких альтернатив (кроме поиска новых строк, как в Варианте 2), потому что строки файла не имеют одинаковой длины.

Sergey Alexandrovich Kryukov

5ед.
—СА