阅读量:0
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函数将字符串还原为二维数组。通过这种方法,动态二维数组可以被序列化和反序列化。