17

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

有没有办法...

  • 单后允许长选项-
  • 允许短选项有多个字符?

因此允许我拥有看起来像的命令行

./a.out -myopt1 foo -myopt2 bar

尽管从编程的角度来看,这两种可能性应该具有相同的效果,但第一种会更好。我看了一下boost::program_options::command_line_style但它看起来不能满足我的需要。

谢谢

编辑:进一步接受下面的答案以使其使用该样式,必须添加以下代码(遵循 boost docs 的命名约定)

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);
4

1 回答 1

26

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

要允许长选项以单个破折号开头,请包含allow_long_disguise命令行样式,如您链接到的文档页面中所述

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

于 2011-08-29T17:54:38.390 回答