QDataStream

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

Поток данных — это двоичный поток кодированной информации, который не зависит от операционной системы хост-компьютера, порядка процессора или байтов. Например, поток данных, записываемый ПК под Windows, может быть прочитан под Linux. Так же можно использовать поток данных для чтения / записи сырых не кодированных двоичных данных. Класс QDataStream реализует сериализацию основных типов данных C ++, таких как char, short, int, char * и т. д. Сериализация более сложных данных выполняется путем разбиения данных на примитивные блоки. Поток данных тесно взаимодействует с QIODevice. QIODevice представляет собой носитель ввода / вывода, с которого можно считывать и записывать данные. Класс QFile является примером устройства ввода-вывода.

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

QFile file ("file.dat"); 
file.open (QIODevice :: WriteOnly); 
QDataStream out (& file); 
out << QString («Число»); 
out << (int) 42; 

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

QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file); 
QString str;
int a;
in >> str >> a;

Каждый элемент, записанный в поток, записывается в предопределенном двоичном формате, который варьируется в зависимости от типа элемента. Поддерживаемые типы Qt включают QBrush, QColor, QDateTime, QFont, QPixmap, QString, QVariant и многие другие. Для целых чисел лучше всегда приводить к целочисленному типу Qt для записи и считывать обратно в тот же целочисленный тип Qt. Это гарантирует получение целого числа нужного размера, и изолирует от различий компилятора и платформы. Начальное устройство ввода / вывода обычно задается в конструкторе, но может быть изменено с помощью setDevice().