您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。