2009-05-08 10 views
11

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

+0

私は**文字の書式設定のこの短いを行うための良い方法を発見したきた...インサートを含む完全に合法STLマップ処理を行うことができますコマンドラインパラメータ。誰かが何かを見つけたら私に知らせてください! – Alex

答えて

13

私の答えは少し遅すぎる来るが、私はboost::program_options::variables_mapstd::map<std::string, boost::program_options::variable_value>から派生していることを思い出す...(包み誰がこの探している)

を似た何かをしようとしているいくつかの時間を費やし、うるさく明白な解決策を見つけましたそれがあるかのように、あなたは

 
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-

+1

program_optionsがstd :: mapを継承しているように見えません。私はそれが由来する参照してください:abstract_variables_map。それがまだ再設計されたstd :: mapであるかどうかチェックしていない。 – Alex

+0

優れたソリューション! – russoue

+0

@Alexでは、[both](http://www.boost.org/doc/libs/1_55_0/boost/program_options/variables_map.hpp)から継承しています。 – russoue

3

Boost::Program_Optionsextra_parserまたはallow_unregisteredの機能を見ましたか?あなたのプログラムがどのように動作するかによって、どちらかまたは両方があなたが望むものをサポートできるはずです。

関連する問題