問題タブ [boost-program-options]

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 投票する
3 に答える
7048 参照

c++ - boost::program_options 複数のトークンを含む設定ファイル オプション

コマンドラインからできるように、構成ファイルのマルチトークンオプションから読み取ることができないようです。設定ファイルの構文は何ですか?

オプションの説明は次のように追加されます。

その後、コマンドと構成ファイルを解析します。

コマンドラインで「--coordinate 1 2」が機能します。ただし、設定ファイルで試してみると:

また

invalid_option_value 例外が発生して失敗します。マルチトークンオプションの場合、構成ファイルの構文は正確には何ですか?

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

c++ - c ++:プログラム設定-boost.PropertyTreeまたはboost.program_options?

プログラムの設定やオプション、構成をC++で保存するためのソリューションを探していました。これらは、GUIで公開され、コードの実行の間に保存する必要がある設定である可能性があります。

私の検索で、私はboost.PropertyTreeに出くわしました。これは良い選択のようでした。私はブーストが尊敬されているコードであることを知っているので、それを快適に使用できるので、これを使用して開発を始めました。次に、 boost.program_optionsに出くわします。これにより、同じことができるように見えますが、プログラム設定の特定のユースケースに特化しているようにも見えます。

今、私はその仕事に最も適切なのはどれか疑問に思っていますか?(または両方よりも優れている3番目のオプションがあります)

編集: fyiこれはプラグイン用であるため、コマンドラインオプションを使用しません(のように、それは不可能です)。

アップデート

私はboost.PropertyTreeに固執することになりました。変更したオプションをINIに保存できるようにする必要がありましたが、boost.program_optionsを使用してそれを行う方法がわかりませんでした。

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

c++ - boost::program_options::positional_options_description 終了

次のプログラムは で中断しpointer being freed was not allocatedます:

OS X 10.6.7 の /usr/local にビルドした Boost 1.46.1 でプログラムをコンパイルしてリンクしました。私が(おそらく)リンクしているもの以外に、インストールされている libboost_program_options が見つかりません。

このクラッシュの原因は何ですか?


編集:スタックトレースに関しては、プログラム

として構築された

./sandbox として実行すると出力が生成されます

Boostの構築に関して:

そして、これが私の ~/user-config.jam です:

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

c++ - 文字列/ブースト::任意のマップからブースト::オプションを構築する

構成を表すマップがあります。std::stringとの地図ですboost::any

このマップは最初に初期化されます。ユーザーがコマンドラインでこれらのオプションをオーバーライドできるようにしたいと思います。

私がやりたいのは、このoptions_description::add_option()メソッドを使用してこのマップからプログラムオプションを作成することです。ただし、テンプレート引数を取りますが、po::value<>私が持っているのは。だけですboost::any

これまでのところ、私はコードのシェルを持っています。 m_Config構成クラスを表し、をgetTuples()返しますstd::map<std::string, Tuple>TuplePairはのtypedefでstd::pair<std::string, Tuple>あり、タプルにはboost::any私が興味を持っているものが含まれています。

この方法でそれを構築する方法はありますか、それとも自分でそれを行うことに頼る必要がありますか?

前もって感謝します!

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

c++ - Boost プログラム オプションでエラー メッセージを改善する方法

以下のコードでは、プログラム オプションを使用して、コマンドラインまたはファイルからパラメーターを読み取りました。さらに、ConfigProxy::setConfigを使用して実行時にプログラムでオプションを設定できます。

ConfigProxy を介して、オプション値が取得されます

ただし、ユーザーが指定した「圧縮」オプションの値が間違ったタイプの場合、たとえば

その後、例外がスローされます

例外は、型キャストの問題を明確に示しています。しかし、このメッセージは、ユーザーがどのオプションがエラーの原因であるかを見つけるのにあまり役に立たないようです。

bad_any_cast例外をスローする代わりに、このタイプのエラーについてユーザーに通知するより良い方法はありますか?

- - - 編集 - - - - - - - - - - - - -

Luc Danton と Tony のおかげで、プログラム オプションがどのようにエラーを表示するかがわかりました。

ロジックを実装することで、bad_any_cast 例外を取り除くことができると思います。

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

c++ - Boost::Program_Options アクセス違反によるハンドルされない例外

DEBUG モードでは正常に動作するプログラムがありますが、RELEASE モードでは、アクセス違反が原因で未処理の例外が発生します。nullポインターが原因ではないことは確かです。コールスタックは次のとおりです。

コード:

例外は次のとおりです。

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

c++ - プログラムオプション値(iniファイル)でハッシュマークを使用する

ブーストプログラムオプションを使用してiniファイルから読み取るのに問題があります。問題は、ハッシュマークを含むキーです(簡単な例)。

[セクション]
key= "xxx#yyy"

キーを取得すると、「xxx」が返されます。これは、ハッシュマークがコメントの先頭として解釈されているように見えるため、行の残りの部分がスキップされるためです。残念ながら、値は正規表現であるため、「#」を他の文字に置き換えることはできません。ハッシュマークを引用する方法が見つかりませんでした。正規表現が変更されてさらに読みにくくなるため、引用しない方がよいでしょう。

iniファイルパーサーを書き直さずにこの問題に対処する方法はありますか?助けてくれてありがとう。

キーを取得するための私のコードは次のようになります。

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

c++ - boost::program_options で `--option=arg` 引数スタイルのみを許可する

boost::program_options を使用して、引数のスタイルのみを許可し、引数がオプションの場合にあいまいになることがある--option=argスペース区切りを禁止したいと思います。--option arg

可能なように見えます。cmdline.hppソース (ドキュメントが見つかりません) を見て、 andのみallow_longを含む制限付きのオプション スタイルを使用しようとしました。long_allow_adjacentlong_allow_next

残念ながら--option arg、このパーサーではまだ受け入れられています...

もしかしてバグ?(libboost_program_options-1_46.so.1.46.1)

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

c++ - Boost :: Program_Optionsでコマンドライン構文「-DEVICE:iphone」をサポートするにはどうすればよいですか?

Boost::Program_Optionsのデフォルトの構文は「--DEVICEiphone」です。構文「-DEVICE:iphone」または「-DEVICE = iphone」をサポートするにはどうすればよいですか?

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

c++ - Boost :: Program_Optionsで、wstringのデフォルト値を設定するにはどうすればよいですか?

以下の私のコードは機能しませんでした:

コンパイルはエラーで失敗しました:

d:\ repo \ a4x_ext \ minidxdriver \ testapp \ configparser \ boost \ lexical_cast.hpp(1096):エラーC2039::はの'setg'メンバーではありません'boost::detail::lexical_stream_limited_src<CharT,Base,Traits>'