キーとしてファイル名でプロパティツリーを後押し
-
21-09-2019 - |
質問
私はでキーとしてファイル名を使用しようとしています後押し:: PropertyTreeする
しかし、 ''こうした「EXAMPLE.SQLの」などのファイル名の文字は、追加の層は、プロパティツリー内追加されます。最も明白な解決策を置き換えることであろう「」別の文字を持つが、これを行うには良い方法は、このようなエスケープ文字と同じように、可能性があります。
次の例では、値10はノードのTXT」、「例」の子に置かれます。その代わり、私は、値10はノードの、EXAMPLE.SQL "に格納することにしたい。
ptree pt;
pt.put("example.txt", 10);
をどのように私は、単一のノードに対して完全なファイル名を使用することができますか?の
あなたの助けを事前に感謝!
解決 2
問題は、ドキュメントが古いということでした。
:パスタイプのオブジェクトは、次のように区切り文字として指定されたファイルパスの無効である別の文字で、次のように作成する必要がありますpt.put(boost::property_tree::ptree::path_type("example.txt", '|'), 10);
私はフィリップVaucherにより投稿されたニュースグループgmane.comp.lib.boost.develでブーストメーリングリストからソリューションへのパスを見つけます。
他のヒント
ただ、明示的にツリーを挿入します:
pt.push_back(ptree::value_type("example.txt", ptree(10)));
put
方法は、それが自動的に追加層として.
を解析する理由である、便宜上単に存在します。私は上に示しているように、明示的にVALUE_TYPEを構築することは、この問題を回避することができます。
問題を解決する別の方法は、区切り文字を変更しput
とget
に余分な引数を使用することです。
pt.put('/', "example.txt", "10");
pt.get<string>('/', "example.txt");
記録のために、私は私の人生の中で前にこのクラスを使用したことがありません。私は右のあなたがにリンクされたページから、すべての情報を得ました。 )
所属していません StackOverflow