QTextStream

Автор: | 31 июля, 2019

Класс для работы с текстовой информацией. Использует потоковые операторы, унаследован от QIODevice.  Реализует чтение и запись через методы << (запись в поток) и >> (чтение из потока).

Числовые данные передаваемые в потоке автоматически преобразуются в текст. Для того чтобы числа записались в файл в читабельном виде можно задать ширину поля qSetFieldWidth() или setFieldWidth().

Для примера запишем в файл два числа.

#include <QTextStream>
#include <QFile>
    QFile data("output.txt");
    if (data.open(QFile::WriteOnly | QFile::Truncate)) {
        QTextStream out(&data);
        out << "Data: " << qSetFieldWidth(10) <<  3.14 << 2.6;
    }

QTextStream использует формат Unicode.

В данном классе представлен удобный метод readLine(), который читаем файл построчно.

Пример считывания файла в QList:

#include <QTextStream>
#include <QFile>
    QList <QString> strLine;
    QFile file ("output.txt");
    if(file.open(QIODevice::ReadOnly))
    {
        QTextStream stream(&file);
        QString str;
        while (!stream.atEnd())
        {
            str = stream.readLine();
            strLine.push_back(str);
        }

        file.close();
    }

Так же есть метод readAll() который прочитает весть файл в строку. Данный метод рекомендуется использовать только для небольших файлов.

Пример считывания всего файла в QString:

#include <QTextStream>
#include <QFile>

QFile file("output.txt");
QTextStream stream(&file);
QString str = stream.readAll();