C++开源库argh使用教程

概述

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

github页面:

复制代码
https://github.com/adishavit/argh

基本用法

#include "argh.h"

创建argh::parser对象

使用parse方法解析命令行

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

例程

cpp 复制代码
#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方法第三个参数有如下取值:

cpp 复制代码
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 的基本用法,并根据需要进行扩展。

相关推荐
kyle~6 小时前
机器视觉---熔池相机(穿透强光的视觉感知)
c++·数码相机·计算机视觉·机器人·焊接机器人
修己xj6 小时前
小书匠:一款本地优先、去中心化的全能笔记软件
开源
宏笋6 小时前
C++ Coroutines(协程) 详解
c++
王老师青少年编程7 小时前
csp信奥赛C++高频考点专项训练之前缀和&差分 --【一维前缀和】:求区间和
c++·前缀和·csp·高频考点·信奥赛·求和区间和
kyle~7 小时前
机器人时间链路---工程流程示例
c++·3d·机器人·ros2
汉克老师9 小时前
GESP6级C++考试语法知识(十七、数据结构(三、认识队列 Queue))
数据结构·c++·队列·gesp6级·gesp六级·数组模拟队列
500849 小时前
Conv + BN + ReLU 融合:省掉两次显存读写
flutter·架构·开源·wpf·音视频
j_xxx404_11 小时前
Linux进程信号捕捉与操作系统运行本质深度解析
linux·运维·服务器·开发语言·c++·人工智能·ai
GitCode官方11 小时前
直播预约|开源鸿蒙PC命令行工具迁移实战:从环境搭建到真机验证全流程拆解
人工智能·华为·开源·harmonyos·atomgit
vx-程序开发11 小时前
基于机器学习的动漫可视化系统的设计与实现-计算机毕业设计源码08339
java·c++·spring boot·python·spring·django·php