Russian Qt Forum

Qt => Общие вопросы => Тема начата: Ursa от Июль 03, 2007, 16:41



Название: чтение из файла
Отправлено: Ursa от Июль 03, 2007, 16:41
Нужно прочитать данные из текстового файла построчно, при этом за разделитель строк принимается нестандартный символ. Единственный вариант, который приходит мне в голову -  использовать QTextStream и getChar'ом последовательно перебирать все символы.
Мож, у кого получше идея найдется?


Название: чтение из файла
Отправлено: pastor от Июль 03, 2007, 16:59
Можно считать все при помощи QTextStream::readAll(). Потом заюзать QString::split(). Ты получишь QStringList, каждый элемент которого твоя строка


Название: чтение из файла
Отправлено: Zmey от Июль 05, 2007, 16:24
Оба метода подходят, вопрос только в размере файла.


Название: чтение из файла
Отправлено: SABROG от Июль 05, 2007, 17:06
Код:

QString line;
     QFile file(QLatin1String("file.txt"));
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
        qDebug("Can't open file");
        return;
     }
     while (!file.atEnd()) {
         line.append(file.readLine());
     }
    QStringList qList = line.split(QLatin1String("МОЙ_НЕСТАНДАРТНЫЙ_СИМВОЛ_ИЛИ_РЯД_СИМВОЛОВ"));


Название: чтение из файла
Отправлено: pastor от Июль 05, 2007, 17:10
Код:
while (!file.atEnd()) { 
    line.append(file.readLine());
}


Лучше тогда так:
Код:

line = file.readAll();


И как правильно заметил Zmey, данный метод не подходит для больших файлов.


Название: чтение из файла
Отправлено: Racheengel от Июль 05, 2007, 22:19
Ну, вариант с realLine() больше подойдет для больших файлов.
Вопрос только - насколько большие, и что надо дальше делать с инфой?


Название: чтение из файла
Отправлено: pastor от Июль 05, 2007, 23:02
Цитата: "Racheengel"
Ну, вариант с realLine() больше подойдет для больших файлов.


Если ты имеешь ввиду вариант решения предложенный SABROG, то, имхо, разницы нету, между этим и моим вариантом. Памяти займёт поидее оба варианта одинаково. Построчный вариант развешо может быть медленее. Что первый что второй вариант неприминим к большим файлам из-за накладных расходов по памяти.

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


Название: чтение из файла
Отправлено: Racheengel от Июль 06, 2007, 00:04
да, именно последнее я и имел виду...