次のような呼び出しが失敗したときにどのキーが関連していたかを知る方法はありますか?boost :: program_optionsの欠落/間違ったキーの処理の改善
boost::program_options::variables_map vm;
...
int foo_bar = vm["some_key"].as<int>();
キーがマップから欠落している、またはint型に変換可能でない場合、私はむしろ、情報価値bad_any_castを取得し、私は次のいずれかを知ることはできません。
- 関与する重要な
- 保存された値です。
- 種類は、私はブーストヘッダーを変更するかのtry..catchブロック内に上記のすべての呼び出しをラップのいずれか含まない任意の解決策を見つけることができません
を関与しました。 一般的な問題だと思うので、他の人がもっと良いアプローチを知っているかもしれません。
ドキュメントで提供されているサンプルは、通常、 'if(vm.count(some_key")!= 0) 'を使ってすべてのオプションをチェックすると思います。 –
すべての単一のキーをチェックすることは理想的ではありませんが、私はそれほど冗長な解決策を望んでいませんでした。私は、最近のバージョンのブーストではオプションが "必須"として設定できることに気付きました。もちろん、これはオプションの値では機能しません。無効な値を扱うという問題はまだあります。 –