Поток данных — это двоичный поток кодированной информации, который не зависит от операционной системы хост-компьютера, порядка процессора или байтов. Например, поток данных, записываемый ПК под 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().