亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
定日县| 呼玛县| 平和县| 应城市| 富平县| 安丘市| 邻水| 北票市| 清徐县| 云梦县| 弥渡县| 弋阳县| 宜兰县| 无为县| 武鸣县| 靖边县| 永丰县| 千阳县| 平阳县| 璧山县| 金昌市| 永登县| 鹤庆县| 弥勒县| 荔波县| 临夏县| 二连浩特市| 新竹市| 米脂县| 郯城县| 综艺| 普宁市| 明光市| 曲阳县| 三台县| 灌南县| 迭部县| 托克托县| 顺义区| 曲靖市| 岫岩|