码迷,mamicode.com
首页 > 编程语言 > 详细

C++/Qt 序列化操作

时间:2015-12-15 19:37:17      阅读:534      评论:0      收藏:0      [点我收藏+]

标签:序列化存储

    序列化操作的含义顾名思义,即按一定的次序将数据保存到存储设备中,或者从存储设备中读取一定次序的数据,且数据类型要保持一致(即读出的数据是我知道的类型)。过程知道了,那怎么做呢?

我是借助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/1723255

C++/Qt 序列化操作

标签:序列化存储

原文地址:http://844133395.blog.51cto.com/3483632/1723255

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!