本文展示通过序列化将自定义数据结构序列化到硬盘文件中,再从文件反序列出来还原数据信息。
Qt中序列化与反序列化
Qt中使用QDataStream类实现对象序列化;
序列化:
QFile file(“file.rx”); //定义文件路径
file.open(QIODevice::WriteOnly); //以只写模式打开
QDataStream out(&file); //定义数据流
out << QString(“hello world!”); //写入内容
反序列化:
QFile file(“datas.rx”); //定义文件路径
file.open(QIODevice::ReadOnly); //以只读模式打开
QDataStream in(&file); //定义数据流
QString str; //创建字符串用于接收
in >> str; //读出内容
自定义数据结构序列化与反序列化
QDataStream只能序列化基本类型,对于自定义类或者数据结构则需要在自定义类中声明并实现友元函数friend:
friend QDataStream &operator<<(QDataStream &stream, const ParamsData &data); //序列化
friend QDataStream &operator>>(QDataStream &stream, ParamsData &data); //反序列胡
QDataStream本身支持的数据类型如下:
bool
qint8
qint16
<