QT学习笔记(七)QDataStream传递自定义的数据类型

QT自带的QDataStream只能传递它自己要求的数据类型。但是我们可以自己重载QDataStream& operator<<()和QDataStream& operator>>();


mydatastream.h

[cpp]  view plain  copy
  1. #ifndef MYDATASTREAM_H  
  2. #define MYDATASTREAM_H  
### QDataStream 数据流类型及其使用方法 #### 1. 构造函数与初始化 `QDataStream` 提供多个构造函数来创建数据流对象。最常用的两种方式是通过 `QIODevice` 或者 `QByteArray` 来初始化: - 默认构造函数用于创建未绑定到任何设备的数据流实例。 - 可以直接入一个 `QIODevice*` 参数给构造函数,从而将该数据流绑定至指定的I/O设备上。 ```cpp // 创建默认的数据流对象 QDataStream stream; // 绑定到文件进行读写操作 QFile file("example.dat"); if (file.open(QIODevice::ReadWrite)) { QDataStream stream(&file); } ``` [^2] #### 2. 设置版本号 为了确保不同平台间兼容性和向前向后的兼容性,在实际应用中通常会设置 `QDataStream` 版本号: ```cpp stream.setVersion(QDataStream::Qt_5_10); // 设置为特定版本 ``` [^1] #### 3. 插入器 (`<<`) 和提取器 (`>>`) `QDataStream` 重载了 C++ 中的标准输入输出运算符 `< <` 和 `> >` ,使得可以非常直观地执行序列化和反序列化的操作。这不仅限于内置的基础数据类型(如整数、浮点数),还包括字符串和其他复杂结构体或类的对象。 ```cpp int number = 42; QString text = "Hello, world!"; double value = 3.14; // 序列化过程 stream << number << text << value; // 反序列化过程 int readNumber; QString readText; double readValue; stream >> readNumber >> readText >> readValue; ``` [^3] #### 4. 关联不同的 IO 设备 除了常见的文件外,`QDataStream` 还能与其他类型的 `QIODevice` 子类配合工作,比如内存缓冲区(`QBuffer`)、网络套接字(`QTcpSocket`)等,实现了更加灵活多样的应用场景下的数据交换功能。 ```cpp QByteArray byteArray; QDataStream byteStream(&byteArray); // 向 QByteArray 写入数据 byteStream << QString("This is a test"); // 从 QByteArray 读取数据 QString str; byteStream >> str; qDebug() << str; // 输出: This is a test ``` [^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值