我正在使用boost :: program_options从命令行参数中读取用户的输入.它工作得非常好,允许我输出有用的使用信息并正确验证输入.但是,默认情况下,长选项名称必须在双击之后,例如--my_long_option短选项在单个短划线之后,并且必须是单个字符,例如; -m.
还有办法要么......
-?因此允许我拥有看起来像的命令行
./a.out -myopt1 foo -myopt2 bar
Run Code Online (Sandbox Code Playgroud)
这两种可能性应该具有相同的效果,但从编程的角度来看,第一种可能会更好.我看了一下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);
Run Code Online (Sandbox Code Playgroud)