Добрый день!
Пытаюсь провести анализ текстовых файлов, одной из задач является привязка полученных данных к номерам строк. Временами попадаются файлы, в которых на конце строки где-то стоит CR LF, а где-то просто CR. При чтении файла в таких ситуациях последовательность CR CR LF читается не как две строки, а как одна. В итоге идет неверная привязка данных к номерам срок в файле. Может это правильно, но, например, notepad++ отображает две строки, поэтому при анализе результатов возникает путаница.
Решил сначала менять в файле CR CR на CR LF CR, а потом делать анализ. Написал следующий код:
QFile file_(path + filename);
QFile tempFile(path + "temp.bin");
QByteArray f_bytes;
QByteArray wrongBytes;
wrongBytes.append(0x0d);
wrongBytes.append(0x0d);
QByteArray writeBytes;
writeBytes.append(0x0d);
writeBytes.append(0x0a);
writeBytes.append(0x0d);
if(file_.open(QIODevice::ReadOnly))
{
f_bytes = file_.readAll();
f_bytes.replace(wrongBytes, writeBytes);
if(tempFile.open(QIODevice::WriteOnly))
{
tempFile.write(f_bytes);
tempFile.close();
}
}
Таким образом в файл temp.bin не пишутся символы CR, только LF, "строки с неправильным переносом" теряются. Убирал вызов f_bytes.replace, ничего не поменялось. Далее не знаю куда именно копать, т.к. опыта работы с QT (и С++) не много. Подскажите, как можно решить описанную проблему?