Boost程序选项语法

Boost Program Options Syntax

本文关键字:语法 选项 程序 Boost      更新时间:2023-10-16

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

有没有办法…

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

这样就允许我的命令行看起来像

./a.out -myopt1 foo -myopt2 bar

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

感谢

Edit:要使其使用该样式,必须添加以下代码(遵循boost文档的命名约定)

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

根据定义,短选项只有一个字符。如果他们有更多的选择,他们会做多。

要允许长选项以一个破折号开始,包括allow_long_disguise命令行样式,如您链接到的文档页面所述:

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