std::vector<std::pair<std::string,std::string>> dd;怎么序列化与反序列化
时间: 2024-10-22 17:03:17 浏览: 5
`std::vector<std::pair<std::string, std::string>>` 是一个 C++ 集合,它存储了字符串对(key-value 对)。要序列化这个数据结构,通常会将其转换成一种可以持久存储或传输的形式,比如 JSON、XML 或二进制文件。这里我们提供一个简单的文本格式序列化的例子:
```cpp
#include <iostream>
#include <fstream>
#include <sstream>
void serialize(const std::vector<std::pair<std::string, std::string>>& data, const std::string& filename) {
std::ofstream file(filename);
if (file.is_open()) {
for (const auto& pair : data) {
std::stringstream ss;
ss << "{" << "key:\"" << pair.first << "\", value:\"" << pair.second << "\"}" << std::endl;
file << ss.str();
}
file.close();
std::cout << "Data serialized to " << filename << std::endl;
} else {
std::cerr << "Failed to open file." << std::endl;
}
}
// 反序列化函数示例(假设从文件读取JSON格式)
std::vector<std::pair<std::string, std::string>> deserialize(const std::string& filename) {
std::ifstream file(filename);
std::vector<std::pair<std::string, std::string>> result;
if (file.is_open()) {
std::string line;
while (getline(file, line)) {
try {
// 假设JSON格式简单
std::istringstream iss(line);
std::string key, value;
iss >> key >> value;
result.push_back({key, value});
} catch (...) {
std::cerr << "Error parsing line: " << line << std::endl;
}
}
file.close();
} else {
std::cerr << "Failed to open file." << std::endl;
}
return result;
}
```
在这个例子中,`serialize` 函数将数据写入文件,每个键值对作为单独的行。`deserialize` 函数则从文件读取这些行并尝试解析回原来的 `std::vector`。
阅读全文