# OptionParser **Repository Path**: Jumping99/option-parser ## Basic Information - **Project Name**: OptionParser - **Description**: 基于getopt_long封装的选项参数解析器,以便于对传入main()的选项进行解析。 - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-25 - **Last Updated**: 2025-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OptionParser ### 介绍 在命令行下运行应用程序时,可能会传入选项和参数。因此需要在编写程序时对main函数的 `argc`和`argv`参数进行解析,提取信息。此选项解码器基于unix函数`getopt_long()` 进行了封装,采用了面向对象方式,更方便直观的添加和处理选项。 ### 类说明 #### `Option`选项类 一个`Option`对象对应一个选项,包括选项名称,有无参数,是否绑定变量,捕获回调函数。 1. `init()`初始化 `void init(std::string name);` 选项在使用前需要初始化,并指定选项名称,可以是短选项(e.g: 'a','c'),也可以是长选项(e.g: 'width', 'bits')。 *tips: 短选项在命令行输入时为单杠单字母,长选项为双杠多字母* 2. `bindVariable()`为选项绑定变量 `void bindVariable(void *pVar, ValueType vType);` 若选项所带的参数需要保存到程序中的变量时,可以为该选项绑定变量,当正确捕获到选项和其参数时,会自动按指定的类型修改该变量。 *tips: 若选项没有绑定变量,则代表此选项在输入时不带参数* 3. `bindCallback()`为选项绑定捕获回调函数 `void bindCallback(OptionCallback cb);` 可以为选项绑定一个捕获回调函数,当捕获到这个选项时,执行该函数。 #### `OptionParser`选项解析器类 选项解析器负责对选项进行解码。 1. `addOption()`添加选项 `void addOption(Option &option);` 如果需要捕获相应的选项`Option`,需要将其添加到解析器。其内部为**值传递**,因此`Option`可以使用局部变量。 2. `process()`开始解析 `bool process(int argc, const char *argv[]);` 当添加完选项后,调用此函数开始选项解析,函数参数即`main()`函数的形式参数。解析成功返回`true`,若有**非法的选项**或**有参选项但没有捕获到其参数**时,返回`false`。 ### 例程 详见`example.cpp`