首页 / C++ / C++/Qt 序列化操作
C++/Qt 序列化操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++/Qt 序列化操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1816字,纯文字阅读大概需要3分钟。
内容图文

序列化操作的含义顾名思义,即按一定的次序将数据保存到存储设备中,或者从存储设备中读取一定次序的数据,且数据类型要保持一致(即读出的数据是我知道的类型)。过程知道了,那怎么做呢?
我是借助Qt框架实现的一个简单的程序。(当然框架把复杂的部分给实现了。如果在你封装的数据中,意思是非Qt标准的数据类型,那么有必要实现"<<" 和 ">>" 运算子来实现自定义类型的序列化操作)。
具体的实现过程如下:
//order.h
#include <QDataStream>
#include <QDateTime>
#include <QFile>
typedef struct __MY_STRCT
{
QString _name;
unsigned int _id;
}SMY_STRCT;
QDataStream & operator << (QDataStream& out, const SMY_STRCT &data);
QDataStream &operator >> (QDataStream& in, SMY_STRCT &data);
class OrderClsTest
{
public:
OrderClsTest();
void store();
void load();
private:
QDateTime _lastTime;
};
//order.cpp
#include "orderclstest.h"
#include <QDebug>
OrderClsTest::OrderClsTest()
{
store();
}
void OrderClsTest::load()
{
QFile file("./data.dat");
if(!file.open(QIODevice::ReadOnly)) return ;
SMY_STRCT _my_strct;
QDataStream in(&file);
in >> _lastTime >> _my_strct;
file.close();
}
void OrderClsTest::store()
{
QFile file("./data.dat");
if(!file.open(QIODevice::WriteOnly)){ return ;}
_lastTime = QDateTime::currentDateTime();
QDataStream out(&file);
SMY_STRCT _my_strct;
_my_strct._id = 123;
_my_strct._name = "hello";
out << _lastTime << _my_strct;
file.close();
}
QDataStream& operator << (QDataStream &out, const SMY_STRCT &data)
{
out << data._id << data._name;
return out;
}
QDataStream& operator >> (QDataStream &in, SMY_STRCT &data)
{
in >> data._id >> data._name;
return in;
}
int main(int argc, char *argv[])
{
OrderClsTest test;
test.load();
}
是不是很简单?从事框架开发指导这些就行了,如果你想实现正真意义上的序列化操作,可以参考MFC 的Persistence机制,也就是我的上一个博客。你会见识的很多。
本文出自 “GDT解说” 博客,请务必保留此出处http://844133395.blog.51cto.com/3483632/1723253
原文:http://844133395.blog.51cto.com/3483632/1723253
内容总结
以上是互联网集市为您收集整理的C++/Qt 序列化操作全部内容,希望文章能够帮你解决C++/Qt 序列化操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。