中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c++序列化和反序列化怎么運用

c++
小億
88
2023-11-09 01:04:58
欄目: 編程語言

C++中的序列化和反序列化可以用于將對象的狀態以字節流的形式保存到文件或數據庫中,然后在需要時重新讀取并恢復對象的狀態。

以下是一個示例,演示了如何在C++中使用序列化和反序列化:

#include <iostream>
#include <fstream>
#include <sstream>

class Student {
private:
    std::string name;
    int age;
public:
    Student(const std::string& name, int age) : name(name), age(age) {}

    std::string getName() const {
        return name;
    }

    int getAge() const {
        return age;
    }

    // 序列化對象
    std::string serialize() const {
        std::stringstream ss;
        ss << name << "," << age;
        return ss.str();
    }

    // 反序列化對象
    static Student deserialize(const std::string& data) {
        std::stringstream ss(data);
        std::string name;
        int age;
        std::getline(ss, name, ',');
        ss >> age;
        return Student(name, age);
    }
};

int main() {
    // 創建一個學生對象
    Student student("Alice", 20);

    // 序列化對象并保存到文件
    std::string serializedData = student.serialize();
    std::ofstream file("student.txt");
    file << serializedData;
    file.close();

    // 從文件中讀取數據并反序列化為對象
    std::ifstream readFile("student.txt");
    std::stringstream buffer;
    buffer << readFile.rdbuf();
    std::string fileData = buffer.str();
    readFile.close();

    Student deserializedStudent = Student::deserialize(fileData);

    std::cout << "Name: " << deserializedStudent.getName() << std::endl;
    std::cout << "Age: " << deserializedStudent.getAge() << std::endl;

    return 0;
}

運行上述代碼,將會輸出反序列化后的學生對象的名稱和年齡。

這只是一個簡單的示例,實際應用中可能需要更復雜的序列化和反序列化操作,例如處理對象的繼承關系、序列化嵌套對象等。

0
沾化县| 宁远县| 哈尔滨市| 德格县| 田林县| 贡嘎县| 保亭| 高要市| 澳门| 绩溪县| 通海县| 尚义县| 石首市| 贞丰县| 商都县| 肥东县| 临安市| 彝良县| 吐鲁番市| 陆丰市| 闻喜县| 雅江县| 龙口市| 深水埗区| 哈尔滨市| 昭通市| 泰兴市| 怀化市| 洞口县| 罗城| 固阳县| 沿河| 吉水县| 巴中市| 修武县| 金寨县| 册亨县| 武安市| 通渭县| 延庆县| 巴楚县|