我来到这里试图找出类似的问题。我花了一段时间才解决它,所以希望这篇文章能帮助其他人。
对我来说,解决问题的关键是记住 ptree 是 boost::property_tree::ptree::value_type 的集合。所以问题归结为“如何将 value_types 从一个 ptree 添加到另一个”。
Ptree 提供了一些用于 value_type 插入的方法:
iterator push_front(const value_type &);
iterator push_back(const value_type &);
iterator insert(iterator, const value_type &);
Ptree 没有 const_reference 类型定义,因此我们不能将 std::copy 与 back_inserter 迭代器一起使用。但是我们可以将 std::for_each 与绑定函数一起使用。
#include <algorithm>
#include <functional>
#include <boost/property_tree/ptree.hpp>
using namespace std;
using namespace boost::property_tree;
...
ptree child;
child.put("Value1", 1);
child.put("Value2", 2);
ptree parent;
std::for_each(child.begin(),
child.end(),
std::bind(&ptree::push_back, &parent, placeholders::_1));
现在,如果 parent 作为 XML 输出,它将包含:
<Value1>1</Value1>
<Value2>2</Value2>