boost :: property_treeのドキュメントを読みましたが、ptreeを更新したり別のptreeとマージしたりする方法が見つかりませんでした。どうすればよいですか?
以下のコードを考えると、update_ptree関数はどのようになりますか?
#include <iostream>
#include <boost/property_tree/ptree.hpp>
using boost::property_tree::ptree;
class A
{
ptree pt_;
public:
void set_ptree(const ptree &pt)
{
pt_ = pt;
};
void update_ptree(const ptree &pt)
{
//How do I merge/update a ptree?
};
ptree get_ptree()
{
return pt_;
};
};
int main()
{
A a;
ptree pt;
pt.put<int>("first.number",0);
pt.put<int>("second.number",1);
pt.put<int>("third.number",2);
a.set_ptree(pt);
ptree pta = a.get_ptree();
//prints "0 1 2"
std::cout << pta.get<int>("first.number") << " "
<< pta.get<int>("second.number") << " "
<< pta.get<int>("third.number") << "\n";
ptree updates;
updates.put<int>("first.number",7);
a.update_ptree(updates);
pta = a.get_ptree();
//Because the update_tree function doesn't do anything it just prints "0 1 2".
//I would like to see "7 1 2"
std::cout << pta.get<int>("first.number") << " "
<< pta.get<int>("second.number") << " "
<< pta.get<int>("third.number") << "\n";
return 0;
}
新しいptreeを繰り返し処理し、「put」を使用して値を挿入することを考えました。しかし、「put」には型が必要であり、新しいptreeからその情報を取得して、古いptreeの引数として使用する方法がわかりません。
update_ptree関数で試したことの1つは、次を使用することです。
pt_.add_child(".",pt);
基本的に、pt_のルートに子としてptを追加しようとします。残念ながら、これは機能していないようです。
何か案は?
私はどんな助けにも感謝しています。
ありがとうございました。
(この質問にproperty_treeタグとptreeタグを追加しようとしましたが、許可されませんでした)