我正在使用boost::program_options来读取用户从命令行输入的参数。它非常方便,让我能够输出有用的使用信息并正确验证输入。但是,默认情况下,长选项名称必须在双破折线后面,例如--my_long_option
,而短选项必须在单破折线后面且必须是单个字符,例如-m
。
是否有一种方法可以...
- 允许单个
-
后面跟着长选项? - 允许短选项具有多个字符?
这样就可以让我的命令行看起来像:
./a.out -myopt1 foo -myopt2 bar
两种可能性的效果应该是相同的,但从编程的角度来看,第一种方法会更好。我查看了boost::program_options::command_line_style,但它似乎不能满足我的需求。谢谢。 编辑:进一步地,在接受下面的答案后,为了使用该样式,必须添加以下代码(按照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);