問題タブ [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.
c++ - ブースト プロパティ ツリーに float 値を格納する C++
一部のライブラリを変更しようとしていますが、float 値を ptree に格納する必要があります。ただし、値を取得すると、そこに入力した値とは異なります。これはダブルスでは起こりません。例:
出力: f: 230518.391 pt.float: 230518.406 pt.double: 230518.391
ここで一体何が起こっているのですか?
xml - ブースト プロパティ ツリーを反復処理する
ブースト プロパティ ツリーを使用して XML ドキュメントを反復処理し、結果を構造体に格納しています。私が抱えている問題は、最初の「アイテム」ノードにしかアクセスできず、2 番目の「アイテム」ノードにアクセスできないことです。どこで間違いを犯したのか誰かが指摘してくれることを期待していました。
私のプログラム出力は次のようになります (アイテムが欠落していることがわかります.. cookie2、candy2、または chocolate2 アイテムは表示されません):
xml ファイルは次のとおりです。
ソースコードは次のとおりです。
これを読んでいただきありがとうございます。私は単純な間違いを犯したと思いますが、どこを理解できません。
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 でエラーが発生する行は次のとおりです。
代わりに、前方宣言を使用しない場合、すべてがうまくいき、正常にコンパイルされます。
私が間違っていることと、この場合に前方宣言を正しく使用するにはどうすればよいですか?
c++ - boost::property_treeが文字列をboolに変換する方法を変更します
Boost property_treeのヘッダーファイルで迷子になり、下位レイヤーに関するドキュメントが不足しているため、ストリームトランスレーターをオーバーライドしてブール値の解析方法を変更する簡単な方法を尋ねることにしました。
問題は、プロパティツリーの入力側にユーザーがいて、ユーザーが構成ファイルを変更できることです。ブール値は、次のようなさまざまな方法で指定できます。
デフォルトの動作では、0または1をチェックしてから、
ストリームを取得して、現在のロケールに適した方法で値を解析しようとします...これは、構成ファイルを海外の顧客に送信しようとすると非常識になる可能性があります。
では、この動作またはブール値のみをオーバーライドする最も簡単な方法は何ですか?実装が最も簡単であるだけでなく、使用も最も簡単です。これにより、iptreeから派生したクラスのユーザーは、ブール値に対して特別なことをする必要がなくなります。
ありがとう!
c++ - boost::property_tree で重複するエントリを検出する方法
重複するエントリを見つけてカリングするという特定の目的で、boost::property_tree を再帰的にトラバースしたいと思います。ツリー内のパスが検出されたら、指定されたパスのインスタンスを除外する親ツリーで get() を発行する方法はありますか? この問題を解決するには、重複したエントリを確実に識別するために、(現在のブランチから始まる) 各要素に対して別の再帰的トラバーサルが必要になる可能性があることを懸念しています。
c++ - boost :: property_tree::json_parserおよび2バイト幅の文字
序章
「á」は2バイト文字です(UTF-8エンコーディングを想定)。
したがって、次の行は2を出力します。
ただし、std::cout
テキストは正しく印刷されます。
私の問題
私はに渡しtext
てboost::property_tree::ptree
からwrite_json
結果は
テキストは「á」とは異なる「á」と同じです。
に切り替えずにこの問題を解決することは可能std::wstring
ですか?ライブラリ(boost::property_tree::ptree
)を変更することでこの問題を解決できる可能性はありますか?
c++ - XML構造の先頭に子ノードを追加します。ブーストプロパティツリー
一連の結果をXMLファイルに書き込んでいます。各結果セットには、一連の結果が含まれています。私の問題は、(コードの数回の実行中に)新しい結果をセットに書き込もうとすると、XMLパーサーが既存のXMLファイルの最初の(最上位の)結果セットを取得し、その結果をそれに追加することです。 (旧)セット。例えば:
したがって、最新の結果セットの書き込みをXMLファイルの先頭に追加できるかどうかを知りたいですか?または、最新の結果セットを取得するときに、リストの最後の結果セットを取得しますか?
はっきりと説明できたと思います。ありがとう
(私が使用しているサンプルコード)
c++ - C++ Boost プロパティ ツリー - ファイルごとにツリーを更新する
私はBoost Property Tree
ini構成ファイルをロードするために使用しています。
このライブラリを使用して、各構成ファイルを 1 つのboost::property_tree::ptree
オブジェクトに読み込むことができます。ptree
ここで、複数の構成ファイルを 1 つのオブジェクトにロードしたいと考えています。
どうすればこの仕事をすることができますか? または、どうすればptree
s を 1 つのオブジェクトにマージできますか?
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 が呼び出されるまで問題ありません。
xml - 二重引用符がないために read_xml() が例外をスローする
boost::property_tree オブジェクトを使用して、次のように xml を解析します。
このコンテンツを解析するために read_xml() を呼び出すと、うまく機能します。しかし、次のようにattr属性を囲む二重引用符を削除すると、次のようになります。
xml_parse_error例外をスローします。
二重引用符のチェックを無視するように設定できるフラグはありますか?