我正在使用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);
答案 0 :(得分:22)
根据定义,短选项只有一个字符。如果他们有更多,他们将是很长的选择。
要允许长选项以单个短划线开头,请包含allow_long_disguise
命令行样式as described on the documentation page you linked to:
可以使用与短选项相同的字符引入长选项,请参阅allow_long_disguise。