C++ 序列化库有很多,比如 Boost.Serialization、cereal 等
首先,确保你已经安装了 CMake 和 Conan。如果没有,请参考官方文档进行安装:https://cmake.org/install/ 和 https://docs.conan.io/en/latest/installation.html
创建一个新的文件夹,用于存放项目文件。例如,我们可以创建一个名为 cereal_example
的文件夹。
在 cereal_example
文件夹中,创建一个名为 CMakeLists.txt
的文件,内容如下:
cmake_minimum_required(VERSION 3.1)
project(cereal_example)
set(CMAKE_CXX_STANDARD 11)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_executable(cereal_example main.cpp)
target_link_libraries(cereal_example ${CONAN_LIBS})
conanfile.txt
的文件,内容如下:[requires]
cereal/1.3.0
[generators]
cmake
mkdir build
cd build
conan install ..
cmake ..
cereal_example
文件夹中,创建一个名为 main.cpp
的文件,内容如下:#include <iostream>
#include <fstream>
#include <cereal/archives/binary.hpp>
#include <cereal/types/vector.hpp>
struct MyData {
int32_t id;
std::string name;
template<class Archive>
void serialize(Archive &archive) {
archive(id, name);
}
};
int main() {
// 序列化
{
std::ofstream os("data.bin", std::ios::binary);
cereal::BinaryOutputArchive archive(os);
MyData data1 = {1, "Alice"};
MyData data2 = {2, "Bob"};
std::vector<MyData> data_list = {data1, data2};
archive(data_list);
}
// 反序列化
{
std::ifstream is("data.bin", std::ios::binary);
cereal::BinaryInputArchive archive(is);
std::vector<MyData> data_list;
archive(data_list);
for (const auto &data : data_list) {
std::cout << "ID: " << data.id << ", Name: " << data.name << std::endl;
}
}
return 0;
}
cmake --build .
./cereal_example
ID: 1, Name: Alice
ID: 2, Name: Bob
现在你已经成功地使用 cereal 库进行了序列化和反序列化操作。你可以根据需要修改 main.cpp
中的代码,以适应你的项目需求。更多关于 cereal 的信息和示例,请参考官方文档:https://uscilab.github.io/cereal/
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。