首页主机资讯C++在Ubuntu上如何实现序列化

C++在Ubuntu上如何实现序列化

时间2025-12-01 20:24:03发布访客分类主机资讯浏览1132
导读:在Ubuntu上使用C++实现序列化,你可以选择多种库,比如Boost.Serialization、cereal、或者自己实现一个简单的序列化机制。下面我将分别介绍如何使用Boost.Serialization和cereal来实现序列化。...

在Ubuntu上使用C++实现序列化,你可以选择多种库,比如Boost.Serialization、cereal、或者自己实现一个简单的序列化机制。下面我将分别介绍如何使用Boost.Serialization和cereal来实现序列化。

使用Boost.Serialization

Boost.Serialization是一个功能强大的库,它允许你轻松地序列化和反序列化C++对象。

  1. 安装Boost库: 打开终端并运行以下命令来安装Boost库:

    sudo apt-get update
    sudo apt-get install libboost-all-dev
    
  2. 编写代码: 创建一个C++文件,比如serialize.cpp,并编写以下代码:

    #include <
        boost/archive/text_oarchive.hpp>
        
    #include <
        boost/archive/text_iarchive.hpp>
        
    #include <
        boost/serialization/vector.hpp>
        
    #include <
        iostream>
        
    #include <
        fstream>
        
    #include <
        vector>
    
    
    class Person {
        
    public:
        std::string name;
        
        int age;
        
    
        template<
        class Archive>
        
        void serialize(Archive &
    ar, const unsigned int version) {
        
            ar &
         name;
        
            ar &
         age;
    
        }
    
    }
        ;
    
    
    int main() {
    
        // 序列化
        {
        
            std::ofstream ofs("person.txt");
        
            boost::archive::text_oarchive oa(ofs);
    
            Person p = {
    "Alice", 30}
        ;
        
            oa <
        <
         p;
    
        }
    
    
        // 反序列化
        {
        
            std::ifstream ifs("person.txt");
        
            boost::archive::text_iarchive ia(ifs);
        
            Person p;
        
            ia >
        >
         p;
        
            std::cout <
        <
         "Name: " <
        <
         p.name <
        <
         ", Age: " <
        <
         p.age <
        <
         std::endl;
    
        }
        
    
        return 0;
    
    }
        
    
  3. 编译代码: 使用g++编译你的代码,并链接Boost.Serialization库:

    g++ serialize.cpp -o serialize -lboost_serialization
    
  4. 运行程序: 运行编译后的程序:

    ./serialize
    

使用cereal

cereal是一个轻量级的C++11序列化库,它易于使用且性能良好。

  1. 安装cereal: 你可以从GitHub上下载cereal库,并按照README中的说明进行安装。或者使用包管理器安装:

    sudo apt-get install libboost-all-dev
    git clone https://github.com/USCiLab/cereal.git
    cd cereal
    mkdir build &
        &
         cd build
    cmake ..
    make
    sudo make install
    
  2. 编写代码: 创建一个C++文件,比如serialize_cereal.cpp,并编写以下代码:

    #include <
        cereal/archives/json.hpp>
        
    #include <
        cereal/types/vector.hpp>
        
    #include <
        fstream>
        
    #include <
        iostream>
        
    #include <
        vector>
    
    
    class Person {
        
    public:
        std::string name;
        
        int age;
        
    
        template<
        class Archive>
        
        void serialize(Archive &
    archive) {
        
            archive(name, age);
    
        }
    
    }
        ;
    
    
    int main() {
    
        // 序列化
        {
        
            std::ofstream ofs("person.json");
        
            cereal::JSONOutputArchive oarchive(ofs);
    
            Person p = {
    "Alice", 30}
        ;
        
            oarchive(p);
    
        }
    
    
        // 反序列化
        {
        
            std::ifstream ifs("person.json");
        
            cereal::JSONInputArchive iarchive(ifs);
        
            Person p;
        
            iarchive(p);
        
            std::cout <
        <
         "Name: " <
        <
         p.name <
        <
         ", Age: " <
        <
         p.age <
        <
         std::endl;
    
        }
        
    
        return 0;
    
    }
        
    
  3. 编译代码: 使用g++编译你的代码,并链接cereal库:

    g++ serialize_cereal.cpp -o serialize_cereal -lcereal
    
  4. 运行程序: 运行编译后的程序:

    ./serialize_cereal
    

以上就是在Ubuntu上使用C++实现序列化的两种方法。你可以根据自己的需求选择合适的库。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: C++在Ubuntu上如何实现序列化
本文地址: https://pptw.com/jishu/760456.html
如何在Ubuntu上配置C++图形界面 C++在Ubuntu上如何处理文件IO

游客 回复需填写必要信息