C++动态二维数组能否序列化

   2024-10-05 7730
核心提示:C++动态二维数组可以序列化,但需要自定义序列化和反序列化的过程。一种常见的方法是将二维数组转换为一维数组,然后序列化一维

C++动态二维数组可以序列化,但需要自定义序列化和反序列化的过程。一种常见的方法是将二维数组转换为一维数组,然后序列化一维数组。在反序列化时,再将一维数组还原为二维数组。

下面是一个示例代码,用于序列化和反序列化动态二维数组:

#include <iostream>#include <vector>#include <sstream>#include <string>// 序列化二维数组std::string serialize(std::vector<std::vector<int>>& arr) {    std::stringstream ss;    for (int i = 0; i < arr.size(); i++) {        for (int j = 0; j < arr[i].size(); j++) {            ss << arr[i][j] << " ";        }        ss << "\n";    }    return ss.str();}// 反序列化二维数组std::vector<std::vector<int>> deserialize(std::string data) {    std::vector<std::vector<int>> arr;    std::stringstream ss(data);    std::string line;    while (std::getline(ss, line)) {        std::vector<int> row;        std::stringstream row_ss(line);        int num;        while (row_ss >> num) {            row.push_back(num);        }        arr.push_back(row);    }    return arr;}int main() {    // 创建动态二维数组    std::vector<std::vector<int>> arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};    // 序列化并输出    std::string serialized_data = serialize(arr);    std::cout << "Serialized data: " << serialized_data << std::endl;    // 反序列化并输出    std::vector<std::vector<int>> deserialized_arr = deserialize(serialized_data);    std::cout << "Deserialized data: " << std::endl;    for (int i = 0; i < deserialized_arr.size(); i++) {        for (int j = 0; j < deserialized_arr[i].size(); j++) {            std::cout << deserialized_arr[i][j] << " ";        }        std::cout << std::endl;    }    return 0;}

这段代码中,serialize函数将二维数组转换为字符串,deserialize函数将字符串还原为二维数组。通过这种方法,动态二维数组可以被序列化和反序列化。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号