我是 c++ 的新手 . 使用 boost 序列化和反序列化 std::Map 类型数据的最简单方法是什么?我找到了一些使用 PropertyTree 的例子,但它们对我来说很模糊 .
c++
boost
std::Map
PropertyTree
请注意 property_tree 将密钥解释为路径,例如放置对"a.b" = "z"将创建一个{"a":{"b":"z"}} JSON,而不是{"a.b":"z"} . 否则,使用 property_tree 是微不足道的 . 这是一个小例子 .
property_tree
#include <sstream> #include <map> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/json_parser.hpp> using boost::property_tree::ptree; using boost::property_tree::read_json; using boost::property_tree::write_json; void example() { // Write json. ptree pt; pt.put ("foo", "bar"); std::ostringstream buf; write_json (buf, pt, false); std::string json = buf.str(); // {"foo":"bar"} // Read json. ptree pt2; std::istringstream is (json); read_json (is, pt2); std::string foo = pt2.get<std::string> ("foo"); } std::string map2json (const std::map<std::string, std::string>& map) { ptree pt; for (auto& entry: map) pt.put (entry.first, entry.second); std::ostringstream buf; write_json (buf, pt, false); return buf.str(); }
1 回答
请注意
property_tree
将密钥解释为路径,例如放置对"a.b" = "z"将创建一个{"a":{"b":"z"}} JSON,而不是{"a.b":"z"} . 否则,使用property_tree
是微不足道的 . 这是一个小例子 .