【问题标题】:Boost program options: positional and multitoken optionsBoost 程序选项:位置和多令牌选项
【发布时间】:2014-05-22 19:34:40
【问题描述】:

当同时允许多标记和位置选项时,boost::program_options 如何解析或管理输入?

例如:

./app.sample pos1 --multitokenoption a b c d pos2 

boost 如何知道multitokenoption 何时结束以及位置选项何时开始?

显然,最合乎逻辑的允许行为是多标记选项必须作为最后一个参数出现,就像函数参数中的默认参数一样,但文档没有说明。

【问题讨论】:

  • 为什么你认为multitokenoption 会完成?它将吃掉所有剩余的令牌。如果需要 'pos2',则会抛出异常。

标签: c++ boost-program-options


【解决方案1】:

有三种方法可以标记多令牌选项的值结束:

  1. 另一种选择:

        ./app.sample pos1 --multitokenoption a b c d --regularoption v pos2
    
  2. 位置选项的选项名称(几乎是#1):

        ./app.sample pos1 --multitokenoption a b c d --pos2 pos2
    
  3. 双破折号:

        ./app.sample pos1 --multitokenoption a b c d -- pos2
    

否则多令牌选项将不知道在哪里停止 - 没什么神奇的。

【讨论】:

  • 如果我没记错的话, boost::program_option 并没有原生支持这种双破折号。
  • 它对我有用。 Boost = 1.55.0,编译器 = GCC 4.8.1,操作系统 = Xubuntu 3.11.10.3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2012-04-10
相关资源
最近更新 更多