c++ qt如何进行对象序列化与反序列化

在C++ Qt中,可以使用QDataStream类进行对象序列化和反序列化。下面是一个简单的示例:

#include 
#include 

class MyObject
{
public:
    MyObject() {}
    MyObject(int x, int y) : m_x(x), m_y(y) {}

    int x() const { return m_x; }
    int y() const { return m_y; }

private:
    int m_x;
    int m_y;
};

void saveObject(const MyObject& obj, const QString& fileName)
{
    QFile file(fileName);
    if (file.open(QIODevice::WriteOnly))
    {
        QDataStream stream(&file);
        stream << obj.x() << obj.y();
        file.close();
    }
}

MyObject loadObject(const QString& fileName)
{
    MyObject obj;
    QFile file(fileName);
    if (file.open(QIODevice::ReadOnly))
    {
        QDataStream stream(&file);
        int x, y;
        stream >> x >> y;
        obj = MyObject(x, y);
        file.close();
    }
    return obj;
}

在上面的示例中,我们定义了一个名为MyObject的类,并在其中包含了两个整型成员变量m_x和m_y。我们还定义了两个函数,saveObject和loadObject,分别用于将对象保存到文件中和从文件中加载对象。

在saveObject函数中,我们首先打开了一个文件,然后创建了一个QDataStream对象,将对象的成员变量x和y写入到数据流中。最后,我们关闭了文件。

在loadObject函数中,我们首先打开了一个文件,然后创建了一个QDataStream对象,从数据流中读取x和y的值,并使用它们创建一个MyObject对象。最后,我们关闭了文件并返回MyObject对象。

需要注意的是,如果要序列化自定义对象,需要在该对象的类中实现序列化和反序列化方法。可以使用QDataStream类的<<和>>运算符重载来实现序列化和反序列化。例如:

class MyObject
{
public:
    MyObject() {}
    MyObject(int x, int y) : m_x(x), m_y(y) {}

    int x() const { return m_x; }
    int y() const { return m_y; }

    friend QDataStream& operator<<(QDataStream& out, const MyObject& obj)
    {
        out << obj.m_x << obj.m_y;
        return out;
    }

    friend QDataStream& operator>>(QDataStream& in, MyObject& obj)
    {
        in >> obj.m_x >> obj.m_y;
        return in;
    }

private:
    int m_x;
    int m_y;
};

在上面的示例中,我们重载了QDataStream的<<和>>运算符,并在其中将对象的成员变量m_x和m_y写入和读取到数据流中。这样,我们就可以直接使用QDataStream类对MyObject对象进行序列化和反序列化操作了。
python库的简单实例及介绍
python傻瓜式入门
人间清醒
量化交易策略介绍
linux系统相关 - 知乎 (zhihu.com)

你可能感兴趣的:(c++,c++,qt,开发语言)