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 实用程序语法指南

本实现遵循的 POSIX 语法指南:

指南编号 内容 支持状态
3 选项名应为单字符(-o)
4 所有选项前应有 '-' 字符
5 无参数的选项可以组合(-abc 等价于 -a -b -c)
6 带参数的选项参数应用空格或直接跟随
7 选项参数不应可选(明确区分需要值和不需要值)
8 选项应先于操作数出现
9 '–' 参数应被识别为选项结束标记
10 第一个 '–' 后的参数视为操作数(位置参数)
11 '-' 作为操作数时不应被解释为选项

GNU 扩展特性

本实现额外支持的 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 控制)
注解
本实现同时支持 POSIX 标准的短选项语法和 GNU 标准的长选项扩展, 适用于大多数命令行工具的开发。
警告
根据 POSIX 指南8,选项应先于位置参数出现。虽然本实现支持选项与位置参数 混合出现(GNU 风格),但为了最大兼容性,建议将选项放在位置参数之前。
参见
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html
https://man7.org/linux/man-pages/man3/getopt.3.html