文章目录
一、QDataStream的构造函数
在 Qt 中,QDataStream 类提供了对二进制数据的序列化和反序列化功能,方便地在文件或网络中读写各种数据类型。
- QDataStream():默认构造函数。
- QDataStream(QIODevice *device):使用指定的 QIODevice 对象初始化数据流。
- QDataStream(QByteArray *byteArray, QIODevice::OpenMode mode):使用指定的字节数组和打开模式初始化数据流。
1.创建一个空的 QDataStream 对象
使用默认构造函数创建的 QDataStream 对象在初始化时未绑定任何设备或数据缓冲区。要使其可用于读写操作,需要在稍后阶段通过 setDevice() 方法将其与一个 QIODevice 对象(如 QFile、QBuffer 等)关联。
示例代码:
#include <QFile>
#include <QDataStream>
#include <QDebug>
int main() {
// 创建一个 QDataStream 对象,未绑定任何设备
QDataStream stream;
// 创建一个 QFile 对象并打开
QFile file("data.dat");
if (!file.open(QIODevice::WriteOnly)) {
qWarning() << "无法打开文件进行写入";
return 1;
}
// 将 QDataStream 与 QFile 关联
stream.setDevice(&file);
// 设置数据流版本(可选,但建议设置以确保兼容性)
stream.setVersion(QDataStream::Qt_6_5);
// 写入数据
qint32 number = 42;
QString text = "Hello, QDataStream!";
stream << number << text;
// 关闭文件
file.close();
// 读取数据
if (!file.open(QIODevice::ReadOnly)) {
qWarning() << "无法打开文件进行读取";
return 1;
}
// 将 QDataStream 与 QFile 重新关联
stream.setDevice(&file);
qint32 readNumber;
QString readText;
stream >> readNumber >> readText;
// 输出读取的数据
qDebug() << "读取的数字:" << readNumber;
qDebug(