溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

實(shí)戰(zhàn)C++序列化庫(kù)快速上手

發(fā)布時(shí)間:2024-09-19 11:04:46 來源:億速云 閱讀:80 作者:小樊 欄目:編程語(yǔ)言

C++ 序列化庫(kù)有很多,比如 Boost.Serialization、cereal 等

  1. 首先,確保你已經(jīng)安裝了 CMake 和 Conan。如果沒有,請(qǐng)參考官方文檔進(jìn)行安裝:https://cmake.org/install/ 和 https://docs.conan.io/en/latest/installation.html

  2. 創(chuàng)建一個(gè)新的文件夾,用于存放項(xiàng)目文件。例如,我們可以創(chuàng)建一個(gè)名為 cereal_example 的文件夾。

  3. cereal_example 文件夾中,創(chuàng)建一個(gè)名為 CMakeLists.txt 的文件,內(nèi)容如下:

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})
  1. 在同一個(gè)文件夾中,創(chuàng)建一個(gè)名為 conanfile.txt 的文件,內(nèi)容如下:
[requires]
cereal/1.3.0

[generators]
cmake
  1. 運(yùn)行以下命令,以生成項(xiàng)目文件:
mkdir build
cd build
conan install ..
cmake ..
  1. cereal_example 文件夾中,創(chuàng)建一個(gè)名為 main.cpp 的文件,內(nèi)容如下:
#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;
}
  1. 編譯并運(yùn)行項(xiàng)目:
cmake --build .
./cereal_example
  1. 你應(yīng)該會(huì)看到以下輸出:
ID: 1, Name: Alice
ID: 2, Name: Bob

現(xiàn)在你已經(jīng)成功地使用 cereal 庫(kù)進(jìn)行了序列化和反序列化操作。你可以根據(jù)需要修改 main.cpp 中的代碼,以適應(yīng)你的項(xiàng)目需求。更多關(guān)于 cereal 的信息和示例,請(qǐng)參考官方文檔:https://uscilab.github.io/cereal/

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI