Spec-Zone.ru › Qt 5.15

Класс QDataStream

Класс QDataStream обеспечивает сериализацию двоичных данных в QIODevice. Подробнее...

Заголовок: #include <QDataStream>
qmake: QT += core
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются реентерабельными.

Типы публичного доступа

Перечисление Порядок байтов { BigEndian, LittleEndian }
Перечисление Точность чисел с плавающей точкой { SinglePrecision, DoublePrecision }
Перечисление Статус { Ok, ReadPastEnd, ReadCorruptData, WriteFailed }
Перечисление Версия { Qt_1_0, Qt_2_0, Qt_2_1, Qt_3_0, Qt_3_1, …, Qt_5_15 }

Функции публичного доступа

QDataStream(const QByteArray &a)
QDataStream(QByteArray *a, QIODevice::OpenMode mode)
QDataStream(QIODevice *d)
QDataStream()
~QDataStream()
void abortTransaction()
bool atEnd() const
QDataStream::ByteOrder byteOrder() const
bool commitTransaction()
QIODevice * device() const
QDataStream::FloatingPointPrecision floatingPointPrecision() const
QDataStream & readBytes(char *&s, uint &l)
int readRawData(char *s, int len)
void resetStatus()
void rollbackTransaction()
void setByteOrder(QDataStream::ByteOrder bo)
void setDevice(QIODevice *d)
void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision)
void setStatus(QDataStream::Status status)
void setVersion(int v)
int skipRawData(int len)
void startTransaction()
QDataStream::Status status() const
int version() const
QDataStream & writeBytes(const char *s, uint len)
int writeRawData(const char *s, int len)
QDataStream & operator<<(qint8 i)
QDataStream & operator<<(quint8 i)
QDataStream & operator<<(qint16 i)
QDataStream & operator<<(quint16 i)
QDataStream & operator<<(qint32 i)
QDataStream & operator<<(quint32 i)
QDataStream & operator<<(qint64 i)
QDataStream & operator<<(quint64 i)
QDataStream & operator<<(std::nullptr_t ptr)
QDataStream & operator<<(bool i)
QDataStream & operator<<(qfloat16 f)
QDataStream & operator<<(float f)
QDataStream & operator<<(double f)
QDataStream & operator<<(const char *s)
QDataStream & operator>>(qint8 &i)
QDataStream & operator>>(quint8 &i)
QDataStream & operator>>(qint16 &i)
QDataStream & operator>>(quint16 &i)
QDataStream & operator>>(qint32 &i)
QDataStream & operator>>(quint32 &i)
QDataStream & operator>>(qint64 &i)
QDataStream & operator>>(quint64 &i)
QDataStream & operator>>(std::nullptr_t &ptr)
QDataStream & operator>>(bool &i)
QDataStream & operator>>(qfloat16 &f)
QDataStream & operator>>(float &f)
QDataStream & operator>>(double &f)
QDataStream & operator>>(char *&s)

Подробное описание

Поток данных — это двоичный поток закодированной информации, который на 100% независим от операционной системы, процессора или порядка байтов хост-компьютера. Например, поток данных, записанный ПК под управлением Windows, может быть прочитан на Sun SPARC, работающем под Solaris.

Также вы можете использовать поток данных для чтения/записи сырых необработанных двоичных данных. Если вам нужен «анализируемый» входной поток, см. QTextStream.

Класс QDataStream реализует сериализацию основных типов данных C++, таких как char, short, int, char *, и т. д. Сериализация более сложных данных достигается путём разбиения данных на примитивные единицы.

Поток данных тесно взаимодействует с QIODevice. QIODevice представляет собой устройство ввода/вывода, из которого можно читать данные и в которое можно записывать данные. Пример устройства ввода/вывода — класс QFile.

Пример (запись двоичных данных в поток):

QFile file("file.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);   // we will serialize the data into the file
out << QString("the answer is");   // serialize a string
out << (qint32)42;        // serialize an integer

Пример (чтение двоичных данных из потока):

QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);    // read the data serialized from the file
QString str;
qint32 a;
in >> str >> a;           // extract "the answer is" and 42

Каждый элемент, записанный в поток, записывается в предопределённом двоичном формате, который зависит от типа элемента. Поддерживаемые типы Qt включают QBrush, QColor, QDateTime, QFont, QPixmap, QString, QVariant и многие другие. Полный список всех типов Qt, поддерживающих потоковую передачу данных, см. в Сериализация типов данных Qt.

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

Перечисления могут быть сериализованы через QDataStream без необходимости вручную определять операторы потоковой передачи. Классы перечислений сериализуются с использованием объявленного размера.

Например, char * строка записывается как 32-битное целое число, равное длине строки, включая байт '\0', за которым следуют все символы строки, включая байт '\0'. При чтении char * строки считываются 4 байта для создания 32-битного значения длины, затем столько же символов для char * строки, включая завершающий символ '\0'.

Начальное устройство ввода-вывода обычно устанавливается в конструкторе, но может быть изменено с помощью setDevice(). Если вы достигли конца данных (или если устройство ввода-вывода не установлено), atEnd() вернёт true.

Версии

Двоичный формат QDataStream эволюционировал с Qt 1.0 и, вероятно, будет продолжать эволюционировать для отражения изменений в Qt. При вводе или выводе сложных типов очень важно убедиться, что используется та же версия потока (version()), что и при чтении и записи. Если вам нужна как обратная, так и прямая совместимость, вы можете встрочить номер версии в приложение:

stream.setVersion(QDataStream::Qt_4_0);

Если вы создаёте новый двоичный формат данных, например, формат файла для документов, созданных вашим приложением, вы можете использовать QDataStream для записи данных в переносимый формат. Как правило, вы записываете краткий заголовок, содержащий магическую строку и номер версии, чтобы оставить место для будущего расширения. Например:

QFile file("file.xxx");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);

// Write a header with a "magic number" and a version
out << (quint32)0xA0B0C0D0;
out << (qint32)123;

out.setVersion(QDataStream::Qt_4_0);

// Write the data
out << lots_of_interesting_data;

Затем прочитайте его с помощью:

QFile file("file.xxx");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);

// Read and check the header
quint32 magic;
in >> magic;
if (magic != 0xA0B0C0D0)
    return XXX_BAD_FILE_FORMAT;

// Read the version
qint32 version;
in >> version;
if (version < 100)
    return XXX_BAD_FILE_TOO_OLD;
if (version > 123)
    return XXX_BAD_FILE_TOO_NEW;

if (version <= 110)
    in.setVersion(QDataStream::Qt_3_2);
else
    in.setVersion(QDataStream::Qt_4_0);

// Read the data
in >> lots_of_interesting_data;
if (version >= 120)
    in >> data_new_in_XXX_version_1_2;
in >> other_interesting_data;

Вы можете выбрать порядок байтов, который нужно использовать при сериализации данных. По умолчанию используется порядок байтов big endian (старший байт первым). Изменение его на little endian нарушает переносимость (если читатель также не изменит порядок байтов на little endian). Мы рекомендуем сохранять это значение, если у вас нет особых требований.

Чтение и запись сырых двоичных данных

Вы можете захотеть напрямую читать/записывать свои собственные сырые двоичные данные в/из потока данных. Данные могут быть прочитаны из потока в предварительно выделенный char * с помощью readRawData(). Аналогичным образом данные могут быть записаны в поток с помощью writeRawData(). Обратите внимание, что любое кодирование/декодирование данных должно выполняться вами.

Аналогичной парой функций являются readBytes() и writeBytes(). Они отличаются от своих сырых аналогов следующим образом: readBytes() считывает quint32, который используется в качестве длины считываемых данных, затем столько байтов считывается в предварительно выделенный char *; writeBytes() записывает quint32, содержащий длину данных, за которой следуют сами данные. Обратите внимание, что любое кодирование/декодирование данных (кроме quint32 длины) должно выполняться вами.

Чтение и запись коллекций Qt

Классы контейнеров Qt также могут быть сериализованы в QDataStream. К ним относятся QList, QLinkedList, QVector, QSet, QHash и QMap. Операторы потока объявляются как нечлены классов.

Чтение и запись других классов Qt

Помимо перегруженных операторов потока, задокументированных здесь, любые классы Qt, которые вы можете захотеть сериализовать в QDataStream, будут иметь соответствующие операторы потока, объявленные как нечлены класса:

    QDataStream &operator<<(QDataStream &, const QXxx &);
    QDataStream &operator>>(QDataStream &, QXxx &);

Например, вот операторы потока, объявленные как нечлены класса QImage:

    QDataStream & operator<< (QDataStream& stream, const QImage& image);
    QDataStream & operator>> (QDataStream& stream, QImage& image);

Чтобы узнать, есть ли у вашего любимого класса Qt аналогичные операторы потока, проверьте раздел «Связанные нечлены» на странице документации класса.

Использование операций чтения транзакций

Когда поток данных работает с асинхронным устройством, фрагменты данных могут поступать в произвольные моменты времени. Класс QDataStream реализует механизм транзакций, который позволяет читать данные атомарно с помощью последовательности операторов потока. Например, вы можете обрабатывать неполные чтения из сокета, используя транзакцию в слоте, подключённом к сигналу readyRead():

in.startTransaction();
QString str;
qint32 a;
in >> str >> a; // try to read packet atomically

if (!in.commitTransaction())
    return;     // wait for more data

Если не получен полный пакет, этот код восстанавливает поток в исходное положение, после чего вам необходимо подождать, пока придут дополнительные данные.

См. также QTextStream и QVariant.

Документация по типам-членам

перечисление QDataStream::ByteOrder

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

Константа Значение Описание
QDataStream::BigEndian QSysInfo::BigEndian Старший байт вначале (по умолчанию)
QDataStream::LittleEndian QSysInfo::LittleEndian Младший байт вначале

перечисление QDataStream::FloatingPointPrecision

Точность чисел с плавающей точкой, используемая для чтения/записи данных. Это повлияет только в том случае, если версия потока данных Qt_4_6 или выше.

Предупреждение: Точность чисел с плавающей точкой должна быть установлена в одинаковое значение на объекте, который записывает, и на объекте, который читает поток данных.

Константа Значение Описание
QDataStream::SinglePrecision 0 Все числа с плавающей точкой в потоке данных имеют 32-битную точность.
QDataStream::DoublePrecision 1 Все числа с плавающей точкой в потоке данных имеют 64-битную точность.

См. также setFloatingPointPrecision() и floatingPointPrecision().

перечисление QDataStream::Status

Это перечисление описывает текущее состояние потока данных.

Константа Значение Описание
QDataStream::Ok 0 Поток данных работает нормально.
QDataStream::ReadPastEnd 1 Поток данных прочитал данные до конца на базовом устройстве.
QDataStream::ReadCorruptData 2 Поток данных прочитал поврежденные данные.
QDataStream::WriteFailed 3 Поток данных не может записать в базовое устройство.

перечисление QDataStream::Version

Это перечисление предоставляет символические синонимы для номеров версий формата сериализации данных.

Константа Значение Описание
QDataStream::Qt_1_0 1 Версия 1 (Qt 1.x)
QDataStream::Qt_2_0 2 Версия 2 (Qt 2.0)
QDataStream::Qt_2_1 3 Версия 3 (Qt 2.1, 2.2, 2.3)
QDataStream::Qt_3_0 4 Версия 4 (Qt 3.0)
QDataStream::Qt_3_1 5 Версия 5 (Qt 3.1, 3.2)
QDataStream::Qt_3_3 6 Версия 6 (Qt 3.3)
QDataStream::Qt_4_0 7 Версия 7 (Qt 4.0, Qt 4.1)
QDataStream::Qt_4_1 Qt_4_0 Версия 7 (Qt 4.0, Qt 4.1)
QDataStream::Qt_4_2 8 Версия 8 (Qt 4.2)
QDataStream::Qt_4_3 9 Версия 9 (Qt 4.3)
QDataStream::Qt_4_4 10 Версия 10 (Qt 4.4)
QDataStream::Qt_4_5 11 Версия 11 (Qt 4.5)
QDataStream::Qt_4_6 12 Версия 12 (Qt 4.6, Qt 4.7, Qt 4.8)
QDataStream::Qt_4_7 Qt_4_6 Такая же, как Qt_4_6.
QDataStream::Qt_4_8 Qt_4_7 Такая же, как Qt_4_6.
QDataStream::Qt_4_9 Qt_4_8 Такая же, как Qt_4_6.
QDataStream::Qt_5_0 13 Версия 13 (Qt 5.0)
QDataStream::Qt_5_1 14 Версия 14 (Qt 5.1)
QDataStream::Qt_5_2 15 Версия 15 (Qt 5.2)
QDataStream::Qt_5_3 Qt_5_2 Такая же, как Qt_5_2
QDataStream::Qt_5_4 16 Версия 16 (Qt 5.4)
QDataStream::Qt_5_5 Qt_5_4 Такая же, как Qt_5_4
QDataStream::Qt_5_6 17 Версия 17 (Qt 5.6)
QDataStream::Qt_5_7 Qt_5_6 Такая же, как Qt_5_6
QDataStream::Qt_5_8 Qt_5_7 Такая же, как Qt_5_6
QDataStream::Qt_5_9 Qt_5_8 Такая же, как Qt_5_6
QDataStream::Qt_5_10 Qt_5_9 Такая же, как Qt_5_6
QDataStream::Qt_5_11 Qt_5_10 Такая же, как Qt_5_6
QDataStream::Qt_5_12 18 Версия 18 (Qt 5.12)
QDataStream::Qt_5_13 19 Версия 19 (Qt 5.13)
QDataStream::Qt_5_14 Qt_5_13 Такая же, как Qt_5_13
QDataStream::Qt_5_15 Qt_5_14 Такая же, как Qt_5_13

См. также setVersion() и version().

Документация по функциям-членам

QDataStream::QDataStream(const QByteArray &a)

Создаёт поток данных только для чтения, который работает с массивом байтов a. Используйте QDataStream(QByteArray*, int), если нужно записывать в массив байтов.

Так как QByteArray не является подклассом QIODevice, внутри создаётся QBuffer для обертывания массива байтов.

QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)

Создаёт поток данных, который работает с массивом байтов a. Флаг mode описывает способ использования устройства.

В качестве альтернативы, вы можете использовать QDataStream(const QByteArray &), если нужно только читать из массива байтов.

Так как QByteArray не является подклассом QIODevice, внутри создаётся QBuffer для обертывания массива байтов.

QDataStream::QDataStream(QIODevice *d)

Создаёт поток данных, использующий устройство ввода/вывода d.

См. также setDevice() и device().

QDataStream::QDataStream()

Создаёт поток данных без устройства ввода/вывода.

См. также setDevice().

QDataStream::~QDataStream()

Удаляет поток данных.

Деструктор не повлияет на текущее устройство ввода/вывода, если это не внутреннее устройство ввода/вывода (например, QBuffer), обрабатывающее QByteArray, переданное в конструкторе, в таком случае внутреннее устройство ввода/вывода будет удалено.

void QDataStream::abortTransaction()

Прерывает операцию чтения.

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

Если вызвана для внутренней транзакции, прерывание делегируется внешней транзакции, и все последующие начатые внутренние транзакции вынуждены завершиться неудачно.

Для внешней транзакции, отбрасывается точка восстановления и все внутренне дублированные данные потока. Не повлияет на текущую позицию чтения в потоке.

Устанавливает состояние потока данных в

Константа Описание
ReadCorruptData .

Эта функция была добавлена в Qt 5.7.

См. также startTransaction(), commitTransaction(), и rollbackTransaction().

bool QDataStream::atEnd() const

Возвращает true если устройство ввода/вывода достигло конечной позиции (конец потока или файла) или если устройство ввода/вывода не задано; в противном случае возвращает false.

См. также QIODevice::atEnd().

QDataStream::ByteOrder QDataStream::byteOrder() const

Возвращает текущую установку порядка байтов — либо BigEndian, либо LittleEndian.

См. также setByteOrder().

bool QDataStream::commitTransaction()

Завершает операцию чтения. Возвращает true если ошибок чтения во время транзакции не произошло; в противном случае возвращает false.

Если вызвана для внутренней транзакции, подтверждение будет отложено до вызова outermost commitTransaction(), rollbackTransaction() или abortTransaction().

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

Эта функция была добавлена в Qt 5.7.

См. также startTransaction(), rollbackTransaction(), и abortTransaction().

QIODevice *QDataStream::device() const

Возвращает устройство ввода/вывода, которое в данный момент установлено, или nullptr если устройство ввода/вывода не установлено.

См. также setDevice().

QDataStream::FloatingPointPrecision QDataStream::floatingPointPrecision() const

Возвращает точность чисел с плавающей точкой в потоке данных.

Эта функция была добавлена в Qt 4.6.

См. также FloatingPointPrecision и setFloatingPointPrecision().

QDataStream &QDataStream::readBytes(char *&s, uint &l)

Читает буфер s из потока и возвращает ссылку на поток.

Буфер s выделяется с помощью new []. Удалите его с помощью оператора delete [].

Параметр l устанавливается в длину буфера. Если прочитанная строка пустая, l устанавливается в 0, а s устанавливается в nullptr.

Формат сериализации — это спецификатор длины quint32, а затем l байтов данных.

См. также readRawData() и writeBytes().

int QDataStream::readRawData(char *s, int len)

Читает не более len байтов из потока в s и возвращает количество прочитанных байтов. Если произошла ошибка, функция возвращает -1.

Буфер s должен быть предварительно выделен. Данные не декодируются.

См. также readBytes(), QIODevice::read() и writeRawData().

void QDataStream::resetStatus()

Сбрасывает состояние потока данных.

См. также Status, status() и setStatus().

void QDataStream::rollbackTransaction()

Откатывает транзакцию чтения.

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

Если она вызвана во внутренней транзакции, откат перенаправляется на внешнюю транзакцию, и все последующие начатые внутренние транзакции будут принудительно завершены с ошибкой.

Для внешней транзакции восстанавливает данные потока до момента вызова startTransaction(). Если поток данных прочитал поврежденные данные или какая-либо из внутренних транзакций была прервана, эта функция прерывает транзакцию.

Если предыдущие операции потока завершились успешно, состояние потока данных устанавливается в

Константа Описание
ReadPastEnd .

Эта функция была введена в Qt 5.7.

См. также startTransaction(), commitTransaction() и abortTransaction().

void QDataStream::setByteOrder(QDataStream::ByteOrder bo)

Устанавливает порядок байтов сериализации в bo.

Параметр bo может быть QDataStream::BigEndian или QDataStream::LittleEndian.

По умолчанию используется порядок байтов Big endian. Рекомендуется оставить это значение, если у вас нет особых требований.

См. также byteOrder().

void QDataStream::setDevice(QIODevice *d)

void QDataStream::setDevice(QIODevice *d)

Устанавливает устройство ввода-вывода в d, которое может быть nullptr для отключения текущего устройства ввода-вывода.

См. также device().

void QDataStream::setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision)

Устанавливает точность чисел с плавающей запятой в потоке данных в precision. Если точность чисел с плавающей запятой — DoublePrecision и версия потока данных — Qt_4_6 или выше, все числа с плавающей запятой будут записываться и читаться с точностью 64 бита. Если точность чисел с плавающей запятой — SinglePrecision и версия — Qt_4_6 или выше, все числа с плавающей запятой будут записываться и читаться с точностью 32 бита.

Для версий до Qt_4_6 точность чисел с плавающей запятой в потоке данных зависит от используемого оператора потока.

По умолчанию — DoublePrecision.

Обратите внимание, что это свойство не влияет на сериализацию или десериализацию экземпляров qfloat16.

Предупреждение: Это свойство должно быть установлено в одном и том же значении для объекта, который записывает и объекта, который считывает поток данных.

Эта функция была введена в Qt 4.6.

См. также floatingPointPrecision().

void QDataStream::setStatus(QDataStream::Status status)

Устанавливает состояние потока данных в заданное status.

Последующие вызовы setStatus() игнорируются до тех пор, пока не будет вызван resetStatus().

См. также Status, status() и resetStatus().

void QDataStream::setVersion(int v)

Устанавливает номер версии формата сериализации данных в v, значение из перечисления Version.

Вы не обязаны устанавливать версию, если используете текущую версию Qt, но для собственных пользовательских двоичных форматов рекомендуется это сделать; см. Versioning в подробном описании.

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

Перечисление Version предоставляет символические константы для различных версий Qt. Например:

QDataStream out(file);
out.setVersion(QDataStream::Qt_4_0);

См. также version() и Version.

int QDataStream::skipRawData(int len)

Пропускает len байтов из устройства. Возвращает количество фактически пропущенных байтов или -1 при ошибке.

Это эквивалентно вызову readRawData() на буфере длиной len и игнорированию буфера.

Эта функция была введена в Qt 4.1.

См. также QIODevice::seek().

void QDataStream::startTransaction()

Начинает новую транзакцию чтения в потоке.

Определяет точку восстановления в последовательности операций чтения. Для последовательных устройств данные чтения дублируются внутри, чтобы позволить восстановление в случае неполного чтения. Для устройств с произвольным доступом эта функция сохраняет текущую позицию потока. Вызовите commitTransaction(), rollbackTransaction() или abortTransaction() для завершения текущей транзакции.

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

Примечание: Восстановление до момента вложенного вызова startTransaction() не поддерживается.

При возникновении ошибки во время транзакции (включая сбой внутренней транзакции) чтение из потока данных приостанавливается (все последующие операции чтения возвращают пустые/нулевые значения), а последующие внутренние транзакции принудительно завершаются с ошибкой. Начало новой внешней транзакции восстанавливает из этого состояния. Это поведение делает ненужным отдельное проверку ошибок для каждой операции чтения.

Эта функция была введена в Qt 5.7.

См. также commitTransaction(), rollbackTransaction() и abortTransaction().

QDataStream::Status QDataStream::status() const

Возвращает состояние потока данных.

См. также Status, setStatus() и resetStatus().

int QDataStream::version() const

Возвращает номер версии формата сериализации данных.

См. также setVersion() и Version.

QDataStream &QDataStream::writeBytes(const char *s, uint len)

Записывает спецификатор длины len и буфер s в поток и возвращает ссылку на поток.

len сериализуется как quint32, за которым следуют len байтов из s. Обратите внимание, что данные не кодируются.

См. также writeRawData() и readBytes().

int QDataStream::writeRawData(const char *s, int len)

Записывает len байтов из s в поток. Возвращает количество фактически записанных байтов или -1 при ошибке. Данные не кодируются.

См. также writeBytes(), QIODevice::write() и readRawData().

END_OF_DOCUMENT_MARKER

QDataStream &QDataStream::operator<<(qint8 i)

Записывает знаковое байтовое значение i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(quint8 i)

Это перегруженный метод.

Записывает беззнаковое байтовое значение i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(qint16 i)

Это перегруженный метод.

Записывает знаковое 16-битовое целое число i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(quint16 i)

Это перегруженный метод.

Записывает беззнаковое 16-битовое целое число i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(qint32 i)

Это перегруженный метод.

Записывает знаковое 32-битовое целое число i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(quint32 i)

Это перегруженный метод.

Записывает беззнаковое целое число i в поток как 32-битовое беззнаковое целое число (quint32). Возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(qint64 i)

Это перегруженный метод.

Записывает знаковое 64-битовое целое число i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(quint64 i)

Это перегруженный метод.

Записывает беззнаковое 64-битовое целое число i в поток и возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(std::nullptr_t ptr)

Это перегруженный метод.

Имитирует запись std::nullptr_t, ptr, в поток и возвращает ссылку на поток. Эта функция фактически ничего не записывает в поток, так как значения std::nullptr_t хранятся как байты 0.

Эта функция была добавлена в Qt 5.9.

QDataStream &QDataStream::operator<<(bool i)

Записывает булево значение i в поток. Возвращает ссылку на поток.

QDataStream &QDataStream::operator<<(qfloat16 f)

Это перегруженный метод.

Записывает число с плавающей точкой f в поток в стандартном формате IEEE 754. Возвращает ссылку на поток.

Эта функция была добавлена в Qt 5.9.

QDataStream &QDataStream::operator<<(float f)

Это перегруженный метод.

Записывает число с плавающей точкой f в поток в стандартном формате IEEE 754. Возвращает ссылку на поток.

См. также setFloatingPointPrecision().

QDataStream &QDataStream::operator<<(double f)

Это перегруженный метод.

Записывает число с плавающей точкой f в поток в стандартном формате IEEE 754. Возвращает ссылку на поток.

См. также setFloatingPointPrecision().

QDataStream &QDataStream::operator<<(const char *s)

Это перегруженный метод.

Записывает строку s с завершающим нулём в поток и возвращает ссылку на поток.

Строка сериализуется с использованием writeBytes().

См. также writeBytes() и writeRawData().

QDataStream &QDataStream::operator>>(qint8 &i)

Считывает знаковое байтовое значение из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(quint8 &i)

Это перегруженный метод.

Считывает беззнаковое байтовое значение из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(qint16 &i)

Это перегруженный метод.

Считывает знаковое 16-битовое целое число из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(quint16 &i)

Это перегруженный метод.

Считывает беззнаковое 16-битовое целое число из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(qint32 &i)

Это перегруженный метод.

Считывает знаковое 32-битовое целое число из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(quint32 &i)

Это перегруженный метод.

Считывает беззнаковое 32-битовое целое число из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(qint64 &i)

Это перегруженный метод.

Считывает знаковое 64-битовое целое число из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(quint64 &i)

Это перегруженный метод.

Считывает беззнаковое 64-битовое целое число из потока в i и возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(std::nullptr_t &ptr)

Это перегруженный метод.

Имитирует считывание std::nullptr_t из потока в ptr и возвращает ссылку на поток. Эта функция фактически ничего не считывает из потока, так как значения std::nullptr_t хранятся как 0 байт.

Эта функция была добавлена в Qt 5.9.

QDataStream &QDataStream::operator>>(bool &i)

Считывает булево значение из потока в i. Возвращает ссылку на поток.

QDataStream &QDataStream::operator>>(qfloat16 &f)

Это перегруженный метод.

Считывает число с плавающей точкой из потока в f в стандартном формате IEEE 754. Возвращает ссылку на поток.

Эта функция была добавлена в Qt 5.9.

QDataStream &QDataStream::operator>>(float &f)

Это перегруженный метод.

Считывает число с плавающей точкой из потока в f в стандартном формате IEEE 754. Возвращает ссылку на поток.

См. также setFloatingPointPrecision().

QDataStream &QDataStream::operator>>(double &f)

Это перегруженный метод.

Считывает число с плавающей точкой из потока в f в стандартном формате IEEE 754. Возвращает ссылку на поток.

См. также setFloatingPointPrecision().

QDataStream &QDataStream::operator>>(char *&s)

Это перегруженный метод.

Читает строку s с завершением '\0' из потока и возвращает ссылку на поток.

Строка десериализуется с помощью readBytes().

Место для строки выделяется с помощью new [] — вызывающий объект должен уничтожить его с помощью delete [].

См. также readBytes() и readRawData().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qdatastream.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API