提升程序选项语法

时间:2011-08-29 17:07:09

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

我正在使用boost::program_options从命令行参数中读取用户的输入。它工作得很好,允许我输出有用的使用信息并正确验证输入。但是,默认情况下,长选项名称必须在双击之后出现,例如--my_long_option,短选项出现在单个短划线之后必须是单个字符,例如; -m

有没有办法......

  • 在单个-之后允许长选项?
  • 允许短选项以包含多个字符?

因此允许我拥有看起来像

的命令行
./a.out -myopt1 foo -myopt2 bar

这两种可能性应该具有相同的效果,但从编程的角度来看,第一种情况会更好。我看了一下boost::program_options::command_line_style,但它看起来不像我能做的那样。

由于

编辑:除了下面接受的答案,要让它使用该样式,必须添加以下代码(遵循提升文档的命名约定)

po::store(
    po::command_line_parser(ac,av)
        .options(desc)
        .style(
            po::command_line_style::unix_style
          | po::command_line_style::allow_long_disguise)
        .run(),
    vm);

1 个答案:

答案 0 :(得分:22)

根据定义,短选项只有一个字符。如果他们有更多,他们将是很长的选择。

要允许长选项以单个短划线开头,请包含allow_long_disguise命令行样式as described on the documentation page you linked to

  

可以使用与短选项相同的字符引入长选项,请参阅allow_long_disguise。