news 2026/9/3 1:46:14

《commander-cpp》单头文件的、链式调用的、自动生成帮助文档的C#x2B;#x2B;命令行参数解析库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《commander-cpp》单头文件的、链式调用的、自动生成帮助文档的C#x2B;#x2B;命令行参数解析库

《commander-cpp》单头文件的、链式调用的、自动生成帮助文档的C++命令行参数解析库

前言

作者我本人经常会写一些命令行小工具,
此前一直使用node.js的三方库commander.js来解析命令行参数,
commander.js是一个非常方便的命令行参数解析库,
但是使用node.js也会有一些限制,比如:运行的电脑上需要安装node.js,并且在一些对性能要求比较高的场景就会不太方便了,
针对上述情况,我尝试切换到c++,但是在实际写代码时发现,现有的命令行解析库使用时没有commander.js那么丝滑,让我很难受,
于是,我决定仿照commander.js的设计,写一个c++的命令行参数解析库,取名为commander-cpp,头文件名为commander_cpp.hpp

仓库

仓库地址:https://github.com/DoYoungDo/commander-cpp

特性

  • 🎯 链式 API 设计,简洁易用
  • 📦 单头文件,无外部依赖
  • 🔧 支持选项(单值、多值、布尔值)
  • 📝 支持参数(必需参数、可选参数、多值参数)
  • 🌲 支持子命令和嵌套命令
  • ⚙️ 支持默认值
  • 📖 自动生成帮助信息
  • 🔍 详细的错误处理和日志系统
  • 🎨 支持选项别名和组合(如-abc

安装

commander_cpp.hpp文件复制到项目中,并在代码中包含它:

/* by 01130.hk - online tools website : 01130.hk/zh/html2cj.html */ #include "commander_cpp.hpp"

示例

示例代码
/* by 01130.hk - online tools website : 01130.hk/zh/html2cj.html */ #include "commander_cpp.hpp" using namespace COMMANDER_CPP; int main(int argc, char **argv) { // 构造一个Command对象,命令名为"example", 等价于:Command().name("example") Command("example") // 设置版本号 .version("1.0.0") // 添加一个简介描述文本 ->description("一个示例命令行应用") // 添加一个选项,选项名是'name',设置别名'n',并指定参数必选 ->option("-n --name <name>", "你的名字" /* 选项的描述 */) // 添加一个参数,参数名是'file',并指定参数可选 ->argument("[file]", "要处理的文件路径") // 添加一个动作回调,当命令行参数解析完成后调用 ->action([](Vector<Variant/* = std::variant<...> */> args /* 参数值列表 */, Map<String /* 选项名 */, Variant /* 选项值 */> opts /* 选项值列表 */) { if (opts.find("name") != opts.end()) { std::cout << "Hello, " << std::get<String>(opts["name"]) << "!" << std::endl; } else { std::cout << "Hello, World!" << std::endl; } }) // 解析命令行参数 ->parse(argc, argv); return 0; }
运行示例
$ ./example -n Alice Hello, Alice! $ ./example -V 1.0.0 $ ./example --help Usage: example [options] 一个示例命令行应用 Options: -V, --version out put version number. -n, --name <name> 你的名字 -h, --help

更多示例...

注意

  • 支持 C++17 或更高版本
做一条有理想的咸鱼
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:01:23

单个视频快速生成指南:HeyGem数字人系统单任务处理模式实测

单个视频快速生成指南&#xff1a;HeyGem数字人系统单任务处理模式实测 在内容创作日益依赖AI的今天&#xff0c;如何用最低门槛、最短时间验证一个数字人视频生成方案是否可行&#xff1f;这是许多初创团队、独立开发者甚至企业市场部门面临的真实问题。传统影视级制作流程动辄…

作者头像 李华
网站建设 2026/9/2 21:02:42

Φ4500mm原油常压蒸馏塔机械设计与校核

摘 要 原油常压蒸馏作为原油加工的一次加工工艺&#xff0c;在原有加工流程中占有举足轻重的作用&#xff0c;其运行的好坏直接影响到整个原有加工的过程。而在蒸馏加工的过程中最重要的分离设备就是常压塔。因此&#xff0c;常压塔的设计好坏对能否获得高收益&#xff0c;搞…

作者头像 李华
网站建设 2026/9/3 2:17:41

HeyGem数字人系统日志查看方法:tail -f 运行实时日志.log 实时监控

HeyGem数字人系统日志查看方法&#xff1a;tail -f 实时监控运行日志 在部署 AI 数字人视频生成系统时&#xff0c;一个常见的困扰是&#xff1a;用户点击“开始生成”后&#xff0c;界面只显示进度条&#xff0c;却无法得知背后究竟发生了什么。模型是否加载成功&#xff1f;音…

作者头像 李华
网站建设 2026/9/2 21:52:21

HeyGem系统依赖哪些Python包?requirements.txt文件预估

HeyGem系统依赖哪些Python包&#xff1f;requirements.txt文件预估 在AI内容创作日益普及的今天&#xff0c;数字人视频生成正从实验室走向实际应用。无论是虚拟主播、智能客服&#xff0c;还是个性化教学视频&#xff0c;用户对“会说话的人脸”需求激增。然而&#xff0c;构建…

作者头像 李华
网站建设 2026/9/2 21:02:43

网盘直链下载助手推荐:方便分发HeyGem生成的大体积视频文件

网盘直链下载助手推荐&#xff1a;方便分发HeyGem生成的大体积视频文件 在AI内容创作日益普及的今天&#xff0c;数字人视频正快速渗透进企业宣传、在线教育、短视频运营等多个领域。像HeyGem这样的AI音视频合成平台&#xff0c;凭借其强大的口型同步能力和批量处理效率&#x…

作者头像 李华
网站建设 2026/9/2 7:18:37

【PHP图像识别API对接实战】:手把手教你快速集成高精度识别功能

第一章&#xff1a;PHP图像识别API对接实战概述在现代Web应用开发中&#xff0c;图像识别技术正逐步成为提升用户体验和实现智能化功能的重要手段。通过将PHP后端系统与图像识别API进行对接&#xff0c;开发者能够轻松实现图片内容分析、文字提取&#xff08;OCR&#xff09;、…

作者头像 李华