|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
命令行参数解析工具 更多...
类 | |
| class | cmdline |
| 命令行参数解析器 更多... | |
命令行参数解析工具
用于解析符合 POSIX 风格和 GNU 风格扩展的命令行参数。 支持长选项(–option)、短选项(-o)、带值选项、多值选项、默认值、位置参数以及自动生成帮助信息。
本实现严格遵循以下命令行接口与实用程序规范:
命令行接口规范:
GNU 扩展规范:
C/C++ 程序入口标准:
帮助信息格式化标准:
根据 POSIX.1-2017 实用程序语法指南和 GNU 编码标准,支持的语法如下:
短选项(POSIX 指南3-5):
| 语法 | 示例 | 说明 |
|---|---|---|
| -o | -v | 单字符短选项 |
| -o value | -f input.txt | 短选项带值(空格分隔) |
| -ovalue | -finput.txt | 短选项带值(无空格) |
| -abc | -xvf | 多个短选项组合(布尔型选项) |
| -abco value | -xvfo output | 组合短选项,最后一个带值 |
长选项(GNU 扩展):
| 语法 | 示例 | 说明 |
|---|---|---|
| –option | –verbose | 长选项(布尔型) |
| –option=value | –file=config.json | 长选项带值(等号分隔) |
| –option value | –file config.json | 长选项带值(空格分隔) |
特殊参数(POSIX 指南10-11):
| 语法 | 说明 |
|---|---|
| – | 选项结束标记,后续参数视为位置参数 |
| - | 短横线单独出现,视为位置参数 |
本实现遵循的 POSIX 语法指南:
| 指南编号 | 内容 | 支持状态 |
|---|---|---|
| 3 | 选项名应为单字符(-o) | ✓ |
| 4 | 所有选项前应有 '-' 字符 | ✓ |
| 5 | 无参数的选项可以组合(-abc 等价于 -a -b -c) | ✓ |
| 6 | 带参数的选项参数应用空格或直接跟随 | ✓ |
| 7 | 选项参数不应可选(明确区分需要值和不需要值) | ✓ |
| 8 | 选项应先于操作数出现 | ✓ |
| 9 | '–' 参数应被识别为选项结束标记 | ✓ |
| 10 | 第一个 '–' 后的参数视为操作数(位置参数) | ✓ |
| 11 | '-' 作为操作数时不应被解释为选项 | ✓ |
本实现额外支持的 GNU 编码标准扩展:
| 扩展特性 | 示例 | 说明 |
|---|---|---|
| 长选项 | –help | 多字符选项名 |
| 长选项带等号 | –file=config.json | 等号分隔选项和值 |
| 选项值可选 | –color[=when] | 通过 requires_value 控制 |
| 多值选项 | -I/usr/include -I/opt/include | allow_multiple 支持 |
| 特性 | 规范参数 |
|---|---|
| 短选项字符 | ASCII 字母数字(a-z, A-Z, 0-9) |
| 长选项名称 | 字母数字、连字符、下划线 |
| 值分隔符 | 空格或 '='(仅长选项) |
| 选项结束标记 | '–' |
| 最大选项数 | 无限制 |
| 多值选项存储 | vector<string> |
| 重复选项行为 | 覆盖或追加(由 allow_multiple 控制) |