問題タブ [boost-propertytree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2425 参照

c++ - ブースト プロパティ ツリーに float 値を格納する C++

一部のライブラリを変更しようとしていますが、float 値を ptree に格納する必要があります。ただし、値を取得すると、そこに入力した値とは異なります。これはダブルスでは起こりません。例:

出力: f: 230518.391 pt.float: 230518.406 pt.double: 230518.391

ここで一体何が起こっているのですか?

0 投票する
1 に答える
7451 参照

xml - ブースト プロパティ ツリーを反復処理する

ブースト プロパティ ツリーを使用して XML ドキュメントを反復処理し、結果を構造体に格納しています。私が抱えている問題は、最初の「アイテム」ノードにしかアクセスできず、2 番目の「アイテム」ノードにアクセスできないことです。どこで間違いを犯したのか誰かが指摘してくれることを期待していました。

私のプログラム出力は次のようになります (アイテムが欠落していることがわかります.. cookie2、candy2、または chocolate2 アイテムは表示されません):

xml ファイルは次のとおりです。

ソースコードは次のとおりです。

これを読んでいただきありがとうございます。私は単純な間違いを犯したと思いますが、どこを理解できません。

0 投票する
1 に答える
1560 参照

c++ - boost::interprocess::ptree の前方宣言

ptreeのクラスに前方宣言を使いたいboost::property_tree

私は Visual Studio 2010 とブースト バージョン 1.48.0 を使用しています。

.h で、次の方法で前方宣言を行います

次に、.cpp 内でクラスを使用します。

コンパイルしようとすると、次のエラーが表示されます

エラー C2371: 'boost::property_tree::ptree': 再定義。ベースの種類が違います。c:\lib\boost\1.48.0\32\boost\property_tree\ptree_fwd.hpp 95

(エラーの説明は異なる場合があります。イタリア語版の Visual Studio を使用しているため、翻訳しました)。

ptree_fwd.hpp でエラーが発生する行は次のとおりです。

代わりに、前方宣言を使用しない場合、すべてがうまくいき、正常にコンパイルされます。

私が間違っていることと、この場合に前方宣言を正しく使用するにはどうすればよいですか?

0 投票する
2 に答える
11311 参照

c++ - boost::property_treeが文字列をboolに変換する方法を変更します

Boost property_treeのヘッダーファイルで迷子になり、下位レイヤーに関するドキュメントが不足しているため、ストリームトランスレーターをオーバーライドしてブール値の解析方法を変更する簡単な方法を尋ねることにしました。

問題は、プロパティツリーの入力側にユーザ​​ーがいて、ユーザーが構成ファイルを変更できることです。ブール値は、次のようなさまざまな方法で指定できます。

デフォルトの動作では、0または1をチェックしてから、

ストリームを取得して、現在のロケールに適した方法で値を解析しようとします...これは、構成ファイルを海外の顧客に送信しようとすると非常識になる可能性があります。

では、この動作またはブール値のみをオーバーライドする最も簡単な方法は何ですか?実装が最も簡単であるだけでなく、使用も最も簡単です。これにより、iptreeから派生したクラスのユーザーは、ブール値に対して特別なことをする必要がなくなります。

ありがとう!

0 投票する
0 に答える
214 参照

c++ - boost::property_tree で重複するエントリを検出する方法

重複するエントリを見つけてカリングするという特定の目的で、boost::property_tree を再帰的にトラバースしたいと思います。ツリー内のパスが検出されたら、指定されたパスのインスタンスを除外する親ツリーで get() を発行する方法はありますか? この問題を解決するには、重複したエントリを確実に識別するために、(現在のブランチから始まる) 各要素に対して別の再帰的トラバーサルが必要になる可能性があることを懸念しています。

0 投票する
3 に答える
5891 参照

c++ - boost :: property_tree::json_parserおよび2バイト幅の文字

序章

「á」は2バイト文字です(UTF-8エンコーディングを想定)。
したがって、次の行は2を出力します。

ただし、std::coutテキストは正しく印刷されます。

私の問題

私はに渡しtextboost::property_tree::ptreeからwrite_json

結果は

テキストは「á」とは異なる「á」と同じです。

に切り替えずにこの問題を解決することは可能std::wstringですか?ライブラリ(boost::property_tree::ptree)を変更することでこの問題を解決できる可能性はありますか?

0 投票する
1 に答える
5509 参照

c++ - XML構造の先頭に子ノードを追加します。ブーストプロパティツリー

一連の結果をXMLファイルに書き込んでいます。各結果セットには、一連の結果が含まれています。私の問題は、(コードの数回の実行中に)新しい結果をセットに書き込もうとすると、XMLパーサーが既存のXMLファイルの最初の(最上位の)結果セットを取得し、その結果をそれに追加することです。 (旧)セット。例えば:

したがって、最新の結果セットの書き込みをXMLファイルの先頭に追加できるかどうかを知りたいですか?または、最新の結果セットを取得するときに、リストの最後の結果セットを取得しますか?

はっきりと説明できたと思います。ありがとう

(私が使用しているサンプルコード)

0 投票する
1 に答える
544 参照

c++ - C++ Boost プロパティ ツリー - ファイルごとにツリーを更新する

私はBoost Property Treeini構成ファイルをロードするために使用しています。
このライブラリを使用して、各構成ファイルを 1 つのboost::property_tree::ptreeオブジェクトに読み込むことができます。ptreeここで、複数の構成ファイルを 1 つのオブジェクトにロードしたいと考えています。
どうすればこの仕事をすることができますか? または、どうすればptrees を 1 つのオブジェクトにマージできますか?

0 投票する
1 に答える
4849 参照

c++ - Unicode への変換時のブースト プロパティ ツリーの問題

まず最初に、私は生まれつき C++ 開発者ではありません。私はいくつかのものをまとめることができ、それはうまく動作しますが、専門家の目を通してそれはゴミのように見えると確信しています =)

そこで、Boost ライブラリの Property Tree を使用するフリーウェア アプリを作成しました。[マルチバイト文字セットを使用] 設定を使用して (VS2010 で) アプリ全体を開発しました。複雑な文字セットを使用しているユーザーがいて、より適切にサポートしたいと考えているため、Unicode をサポートするようにアプリを調べて更新する時期だと判断しました。

ワイド文字列を使用するようにすべての参照と呼び出しを変更し、必要なすべての変換を行うという面倒なプロセスを経ました。しかし、私はある時点で完全に困惑しました.2つのコンパイラエラーしか残っていません.

これらは両方とも、stream_translator.hpp (/boost/property_tree/) の 33 行目と 36 行目からのものです (下記参照)。

33行目のエラーは次のとおりです。

..36 行目のエラーは次のとおりです。

私が逆方向に歩いてきたことから、それは最終的に値を取得するための呼び出しとして始まるstream_translator.hpp内から来ています [eg ptree.get("some.path", "default value here")]

この問題を解決する方法がまったくわからず、問題の正確な内容を理解するのに役立つものをオンラインで見つけることができないようです。ヒントや情報をいただければ幸いです。

編集

そのため、ptree に関連するすべてをコンパイルするまでコメントアウトし、それらを再度追加し始めました。.get を正常に呼び出すことができることがわかりました。36 行目のエラーが表示されるのは get_child です (他のプロジェクトはまだ行っていませんが、 wstringの問題はどこにあります)。

簡単にするために、呼び出しの効果的なシーケンスを次に示します。これは、get_child が呼び出されるまで問題ありません。

0 投票する
2 に答える
411 参照

xml - 二重引用符がないために read_xml() が例外をスローする

boost::property_tree オブジェクトを使用して、次のように xml を解析します。

このコンテンツを解析するために read_xml() を呼び出すと、うまく機能します。しかし、次のようにattr属性を囲む二重引用符を削除すると、次のようになります。

xml_parse_error例外をスローします。

二重引用符のチェックを無視するように設定できるフラグはありますか?