boost :: program_options:如何指定没有" - "或" - "的命令

Per*_*nce 10 c++ boost boost-program-options

我正在使用boost :: program_options来实现具有以下语法的命令行实用程序:

myutil command [--in file_name] [---out file_name]
Run Code Online (Sandbox Code Playgroud)

其中'command'是必需的,并且是以下之一:

read | write | find | version | help
Run Code Online (Sandbox Code Playgroud)

问题是"命令"不应该要求--或者-我还没有找到如何使用boost :: program_options来做到这一点.

per*_*eal 10

没有名称的命令行选项称为位置选项:

po::positional_options_description p;
p.add("command", -1);
po::variables_map vm;
po::store(po::command_line_parser(ac, av).
          options(desc).positional(p).run(), vm);
Run Code Online (Sandbox Code Playgroud)

  • 这是有效的.一个重要的警告:位置选项也应该作为常规选项添加:`po :: positional_options_description p;``p.add("command",-1);``boost :: program_options :: options_description desc;`` desc.add_options()("command","read | write | find | version | help");``po :: variables_map vm;``po :: store(po :: command_line_parser(ac,av).options( desc).positional(p).run(),vm);` (12认同)