9

ライブラリで、boost::program_optionsを介して追加されていないパラメータをユーザーが渡すことを許可する方法がわかりませんadd_options()
プログラムを終了するのではなく、単に無視したいのです。

4

2 に答える 2

11

今夜、まったく同じ問題に遭遇しました。@TASの答えは私を正しい道に導きましたが、特定のユースケースの正確な構文を理解するのに20分かかりました。

これを書く代わりに、未知のオプションを無視するには:

po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);

私はこれを書きました:

po::variables_map vm;
po::store(po::command_line_parser(argc, argv).options(desc).allow_unregistered().run(), vm);
po::notify(vm);

中央の行のみが異なることに注意してください。

一言で言えば、呼び出しの後にいくつかの「ぶら下がっているビット」(つまり、 )を付けて、commandline_parser()ではなく使用します。parse_commandline().options(desc).allow_unregistered().run()

于 2016-03-23T02:56:33.250 に答える
10

boost :: program_optionsドキュメントから方法:不明なオプションを許可する

parsed_options parsed = 
    command_line_parser(argc, argv).options(desc).allow_unregistered().run();      
于 2013-03-21T18:22:44.273 に答える