c++ - boost program_options : help vs. 有意义的选项

标签 c++ boost command-line-arguments boost-program-options

有没有一种简单的方法可以将帮助选项与“真实”程序选项分开?事实上,是否可以定义选项的层次结构,la BNF :

options := help_options | program_options
help_options := '-h'
program_options := '-m1' mode1options | '-m2' mode2options
mode1options := number
...

或者有更好的方法来实现这个目标吗?我应该恢复 spirit 吗?

最佳答案

文档描述了如何在 Option Groups and Hidden Options 下分隔选项标题。它演示了定义多个 options_description 对象,然后使用 all 组来解析命令行,但使用 visible 组来显示文档:

// Declare an options description instance which will include
// all the options
options_description all("Allowed options");
all.add(general).add(gui).add(backend);

// Declare an options description instance which will be shown
// to the user
options_description visible("Allowed options");
visible.add(general).add(gui);

variables_map vm;
store(parse_command_line(ac, av, all), vm);

if (vm.count("help")) 
{
    cout << visible;
    return 0;
}

虽然 Program_options 库允许您自定义一些语法(请参阅 Non-conventional SyntaxCustom Validators ),但它不提供定义自定义语法的方法。如果您想定义命令行的语法,请使用不同的工具。

关于c++ - boost program_options : help vs. 有意义的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138259/

相关文章:

c++ - 使用 boost iostream 每个连接发送多个文件

c - Makefile C 命令行参数

c++:尝试使用const成员构造类

c++ - 特征稀疏求解器结果错误

c++ - 在 C++ 中强制执行 NULL 检查

bash - b2 命令在直接调用而不是从间接 bash 脚本变量调用时查找 ICU

c# - 无法将选项转换为 System.Type on Parser.ParseArguments

C 命令行参数,分词

c++ - QT GroupBox 样式表

c++ - 使用 fgetc/fwrite 的简单字节更改失败