Я сделал решение с помощью QByteArray. Решение:
QFile fileCSV("someFile.txt");
if ( !fileCSV.open(QIODevice::ReadOnly | QIODevice::Text))
emit errorOccurredReadingCSV(this);
while ( !fileCSV.atEnd())
{
QByteArray arrayCSV = fileCSV.readLine();
reconstructedCSVFileSize += arrayCSV.size();
QTextStream textStreamCSV(arrayCSV);
QString line = textStreamCSV.readLine();
}
Но есть проблема. Посмотрите файлы, которые я отправляю files2.zip .
Когда я читаю largeFile.csv с этим подходом, первая строка правильно читается, размер строки равен 108, а количество символов равно 108. Число, возвращаемое arrayCSV.size (), равно 221.
Когда я читаю вторую строку, размер строки равен 50, но количество символов равно 25. Число, возвращаемое arrayCSV.size (), равно 51. Когда я открываю строку с помощью отладчика, строка пуста, хотя его размер равен 50. Я предполагаю, что это происходит потому, что первая строка написана с одной кодировкой, а другая - с другой кодировкой, в результате чего QTextStream ведет себя неправильно.
Когда я читаю файл smallFile.csv, все в порядке. Размер строки 16, также количество символов 16 (без символа \ n). Число, возвращаемое arrayCSV.size (), равно 18.
Вторая строка также правильно прочитана. Размер строки равен 25, а количество символов равно 25. Число, возвращаемое функцией arrayCSV.size (), равно 25.
Первый код, который я разместил, правильно читает строки из обоих файлов.