【问题标题】:boost::program_options: how to ignore unknown parameters?boost::program_options:如何忽略未知参数?
【发布时间】:2013-03-21 15:55:21
【问题描述】:

boost::program_options库中,我无法理解如何允许用户通过add_options()传递一个尚未添加的参数。
我希望它被忽略,而不是终止程序。

【问题讨论】:

    标签: c++ boost boost-program-options


    【解决方案1】:

    今晚我遇到了同样的问题。 @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(),并在调用后添加一些“dangly bits”(即.options(desc).allow_unregistered().run())。

    【讨论】:

      【解决方案2】:

      来自 boost::program_options 文档How To: Allowing Unknown Options

      parsed_options parsed = 
          command_line_parser(argc, argv).options(desc).allow_unregistered().run();      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        相关资源
        最近更新 更多