91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何自定義C++ value的序列化方法

c++
小樊
82
2024-08-29 18:13:25
欄目: 編程語言

在 C++ 中,為了實現自定義類型的值序列化,你需要提供一個將對象轉換為字節流(序列化)以及從字節流還原為對象(反序列化)的方法

首先,創建一個名為 Person 的簡單類:

#include<iostream>
#include<string>

class Person {
public:
    std::string name;
    int age;

    Person() : name(""), age(0) {}
    Person(std::string name, int age) : name(name), age(age) {}
};

接下來,為 Person 類添加序列化和反序列化方法。這里我們使用 C++ 的字符串流(std::stringstream)作為示例:

#include <sstream>

class Person {
    // ... 其他代碼 ...

    // 序列化方法
    std::string serialize() const {
        std::stringstream ss;
        ss.write(reinterpret_cast<const char*>(&age), sizeof(age));
        std::string nameSize = std::to_string(name.size());
        ss.write(nameSize.c_str(), nameSize.size());
        ss.write(name.c_str(), name.size());
        return ss.str();
    }

    // 反序列化方法
    static Person deserialize(const std::string& data) {
        std::stringstream ss(data);
        int age;
        ss.read(reinterpret_cast<char*>(&age), sizeof(age));
        std::string nameSizeStr;
        for (char c; ss.get(c); nameSizeStr += c);
        size_t nameSize = std::stoi(nameSizeStr);
        std::string name;
        for (size_t i = 0; i< nameSize; ++i) {
            char c;
            ss.get(c);
            name += c;
        }
        return Person(name, age);
    }
};

現在,你可以使用 serialize() 方法將 Person 對象轉換為字節流,并使用 deserialize() 方法將字節流還原為 Person 對象:

int main() {
    Person person("Alice", 30);
    std::string serializedData = person.serialize();

    Person deserializedPerson = Person::deserialize(serializedData);
    std::cout << "Name: "<< deserializedPerson.name << ", Age: "<< deserializedPerson.age<< std::endl;

    return 0;
}

請注意,此示例僅適用于簡單的數據類型,如整數和字符串。對于更復雜的數據結構,你可能需要使用第三方庫(如 Boost.Serialization、cereal 等)來處理序列化和反序列化。

0
漠河县| 德格县| 邵阳县| 宝应县| 烟台市| 罗源县| 通化市| 航空| 清新县| 驻马店市| 农安县| 思南县| 原平市| 陆河县| 密山市| 渭南市| 灌南县| 伊宁县| 吉安市| 渝北区| 娱乐| 达拉特旗| 黎川县| 张家界市| 屯昌县| 河南省| 高青县| 福州市| 云霄县| 湖州市| 巴彦淖尔市| 海城市| 前郭尔| 资讯| 无为县| 丰镇市| 通道| 浮梁县| 玉山县| 印江| 丹江口市|