当前位置: 首页 > news >正文

C++开源库argh使用教程

概述

argh 是一个轻量级的 C++ 命令行参数解析库,只需要包含一个头文件即可使用。

github页面:

https://github.com/adishavit/argh

基本用法

#include "argh.h"

创建argh::parser对象

使用parse方法解析命令行

argh::parser重载了括号运算符,使用中括号判断一般的选项(bool类型),使用小括号读取字符串形式的变量值。

例程

#include "argh.h"
#include <iostream>
using namespace std;/*run: ./test -a -c=123
output: 
a
no b
c = 123
*/
int main(int argc, char* argv[])
{argh::parser cmdl;cmdl.parse(argc, argv, argh::parser::PREFER_FLAG_FOR_UNREG_OPTION);if (cmdl["a"]) cout << "a" << endl;else cout << "no a" << endl;if (cmdl["b"]) cout << "b" << endl;else cout << "no b" << endl;cout << "c = " << cmdl("c").str() << endl;return 0;
}

mode参数

parse方法第三个参数有如下取值:

enum Mode { PREFER_FLAG_FOR_UNREG_OPTION = 1 << 0,PREFER_PARAM_FOR_UNREG_OPTION = 1 << 1,NO_SPLIT_ON_EQUALSIGN = 1 << 2,SINGLE_DASH_IS_MULTIFLAG = 1 << 3,
};

除此之外0也是合法值,可以选多个值做或运算。

PREFER_FLAG_FOR_UNREG_OPTION:不以"-"开头的参数解释为选项(FLAG),可以用中括号读取。"a"和"-a"的含义相同

PREFER_PARAM_FOR_UNREG_OPTION:不以"-"开头的参数解释为上一个参数的值,可以用小括号读取。"-a b"和"-a=b"的含义相同。一般不和PREFER_FLAG_FOR_UNREG_OPTION同时使用。
NO_SPLIT_ON_EQUALSIGN:等号(=)解释为字符串的一部分而非赋值。这个模式不常用。
SINGLE_DASH_IS_MULTIFLAG:超过一个字符的选项解释为多个选项。"-ab"和"-a -b"的含义相同。可以实现类似"tar -zxvf"的功能。

总结

argh 是一个简单易用的 C++ 命令行参数解析库,适合需要快速解析命令行参数的项目。通过上述示例,可以轻松掌握 argh 的基本用法,并根据需要进行扩展。

相关文章:

  • Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)
  • JAVA Web 期末速成
  • DeepSeek 赋能机器人研发:从技术革新到场景落地
  • 【C/C++】C语言内存操作与字符串处理汇总
  • 简单实现网页加载进度条
  • Bootstrap 5 容器与网格系统详解
  • Java中的流详解
  • 2025ICPC邀请赛南昌游记
  • 【C语言基础语法入门】通过简单实例快速掌握C语言核心概念
  • 安防综合管理系统EasyCVR视频融合平台安防知识:门禁系统与视频监控系统如何联动?
  • 【Qwen开源】WorldPM: 扩展人类偏好建模
  • EMC基础知识-EFT(上)
  • 基于AI的Web数据管道,使用n8n、Scrapeless和Claude
  • mybatis-plus实操
  • 【Nextcloud】使用 LNMP 架构搭建私有云存储:Nextcloud 实战指南
  • TDesign AI Chat - Vue3.x 可用!腾讯出品的 AIGC 交互对话组件,免费开源、包含设计资源
  • MyBatis入门指南
  • Java微服务架构实战:Spring Boot与Spring Cloud的深度整合
  • 代码审查服务费用受哪些因素影响?如何确定合理报价?
  • React 个人笔记 Hooks编程
  • 被央视曝光“废旧厂区沦为垃圾山”,江西萍乡成立调查组查处
  • 事关中国,“英伟达正游说美国政府”
  • 广东进入“倒水模式”,珠江防总、珠江委已启动Ⅳ级应急响应
  • 普京调整俄陆军高层人事任命
  • 今年有望投产里程已近3000公里,高铁冲刺谁在“狂飙”?
  • 七旬男子驾“老头乐”酒驾被查,曾有两次酒驾两次肇事记录