boost.Program_optionsにオプションを手動で挿入するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/841434

質問

Boost.Program_optionsを使用して構成オプションを保存および管理するアプリケーションがあります。現在、構成ファイルから離れ、代わりにデータベースがロードされた構成を使用しています。ホスト名とインスタンス名でデータベースから構成オプションを読み取るAPIを作成しました。 (クール!)しかし、私が見る限り、これらのオプションをブーストProgram_optionsに手動で挿入する方法はありません。誰かこれを以前に使ったことがありますか? boostのドキュメントは、マップ内のデータを取得する唯一の方法がストア関数であると示しているようです。ストア関数は、コマンドラインまたは構成ファイルから読み取ります(目的のものではありません)。基本的に、DB読み取り値を手動でマップに挿入する方法を探しています。

役に立ちましたか?

解決

私の答えは少し遅すぎますが、似たようなことをしようとして少し時間を費やし、迷惑なほど明らかな解決策を見つけました(他の誰かがこれを探している場合)...

boost::program_options::variables_mapstd::map<std::string, boost::program_options::variable_value>から派生していることを思い出してください。挿入を含む完全に合法なSTLマップ処理を行うことができます...

namespace po = boost::program_options;
po::variables_map vm;
vm.insert(std::make_pair("MyNewEmptyOption", po::variable_value());
vm.insert(std::make_pair("MyNewIntOption", po::variable_value(32, false));
po::notify(vm);

-Edmond-

他のヒント

extra_parserallow_unregisteredまたはBoost::Program_Options関数を見ましたか?プログラムの動作方法に応じて、どちらかまたは両方が必要なものをサポートできるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top