C++在Ubuntu上如何实现序列化
导读:在Ubuntu上使用C++实现序列化,你可以选择多种库,比如Boost.Serialization、cereal、或者自己实现一个简单的序列化机制。下面我将分别介绍如何使用Boost.Serialization和cereal来实现序列化。...
在Ubuntu上使用C++实现序列化,你可以选择多种库,比如Boost.Serialization、cereal、或者自己实现一个简单的序列化机制。下面我将分别介绍如何使用Boost.Serialization和cereal来实现序列化。
使用Boost.Serialization
Boost.Serialization是一个功能强大的库,它允许你轻松地序列化和反序列化C++对象。
-
安装Boost库: 打开终端并运行以下命令来安装Boost库:
sudo apt-get update sudo apt-get install libboost-all-dev -
编写代码: 创建一个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; } -
编译代码: 使用g++编译你的代码,并链接Boost.Serialization库:
g++ serialize.cpp -o serialize -lboost_serialization -
运行程序: 运行编译后的程序:
./serialize
使用cereal
cereal是一个轻量级的C++11序列化库,它易于使用且性能良好。
-
安装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 -
编写代码: 创建一个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; } -
编译代码: 使用g++编译你的代码,并链接cereal库:
g++ serialize_cereal.cpp -o serialize_cereal -lcereal -
运行程序: 运行编译后的程序:
./serialize_cereal
以上就是在Ubuntu上使用C++实现序列化的两种方法。你可以根据自己的需求选择合适的库。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C++在Ubuntu上如何实现序列化
本文地址: https://pptw.com/jishu/760456.html
