跟小德学C++之参数处理

嗨,大家好,我是出生在达纳苏斯的一名德鲁伊,我是要立志成为海贼王,啊不,是立志成为科学家的德鲁伊。最近,我发现我们所处的世界是一个虚拟的世界,并由此开始,我展开了对我们这个世界本源的探索。那么就由我来带领大家拨开迷雾,深入探究我们世界的根本。

前两期我们介绍了src/server/apps/authserver目录下的Main.cpp文件中的main函数的前两行代码,那么我们继续向下进行。

configFile是获取配置文件路径,使用的是std::filesystem::path类,这个类是C++17标准中引入的,用于处理文件系统路径的类。它提供了一种跨平台的方式来处理文件和目录路径。在C++17标准中,std::filesystem::path类引入了一些新的成员函数和操作符,以便更方便地处理文件系统路径。这些成员函数和操作符包括用于连接路径、修改路径、比较路径、生成路径、分解路径等功能。

GetConsoleArguments是我们要重点分析的内容,参数处理可以使程序运行更灵活。

参数处理

Boost库中的 program_options可以很方便的形成命令行参数配置

program_options库由三个部分构成:

1、options_description(选项描述器)

作用:描述当前的程序定义了哪些选项

常用语句:

options_description opt; // 定义选项描述器

opt.add_option()("help,h", "Help message"); // 添加选项

opt.add_option()("file,f", value(), "to find a file"); // 添加选项

opt.add(opt1).add(opt2); // 添加选项描述器

2、parse_command_line(选项分析器)

作用:解析由命令行输入的参数

常用语句

command_line_parser(argc, argv).options(opt).run()

3、variables_map(选项存储器)

作用:把分析器分析的结果保存成程序中的变量

variables_map vm; // 定义存储器

store( 分析器 , vm); // 存储分析结果

notify(vm); // 更新存储器 vm

vm["file"].asstd::string() // 得到选项--file的选项值

代码解析

根据我们在参数处理章节描述的内容,对比GetConsoleArguments来看,authserver主要有四类参数,help,h是打印帮助信息,就是将有哪些参数以及参数说明输出;version,v是打印版本信息;dry-run,d是提供进程试运行的功能;config,c是可以指定自己的配置文件路径。

好了,今天就到这里吧,我要去呵护我的世界之树了,拜拜。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/274933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go 使用 - sync.Metux

[TOC](sync.metux 使用) 简介 简述使用metux使用的方法, 使用的注意点, 以及使用情况使用方法 提供的方法 Lock() 方法用于获取锁 Unlock() 方法用于释放锁 TryLock()方法尝试获取锁 对共享资源进行加锁, 例 &#…

1.3MySQL中的自连接

自己的表和自己连接,核心:一张表拆为两张一样的表。 语法:select 字段列表 from 表 [as] 表别名1,表 [as] 表别名2 where 条件...; 关于怎样把一个表拆分成一个表,只要给它们分别取别名就行 categoryidpidcategoryname21信息…

errors包返回堆栈信息的性能测试

errors包返回堆栈信息的性能测试 上一篇Golang中使用errors返回调用堆栈信息 讲了使用第三方开源库的errors github.com/go-errors/errors,错误信息带调用栈,方便定位错误的抛出位置。 通过堆栈的信息来定位是方便了,性能怎么样&#xff0c…

力扣:452. 用最少数量的箭引爆气球(贪心)

题目: 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。…

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构 1 先来认识GTM的通用架构2 概览2.1 架构的简要说明2.2 架构概述1 先来认识GTM的通用架构 GTM系统使用GTM全局时钟fGTM 运行(本文称为SYS_CLK)。 特点如下: GTM模块由两个主要部分组成: 由博世设计的GTM IP v3.1.5.1 …

gitee+picgo+typora图床搭建

giteepicgotypora图床搭建 1.安装typora 官网下载直接安装:https://www.typora.io/#download 2.编辑typora图像设置 打开 文件 -> 偏好设置 -> 图像设置 插入图片时 选择 上传图片设置 上传服务 为 PicGo-Core(command line) 3.为typora安装PicGo-Core 点…

IntelliJ IDEA Apache Dubbo,IDEA 官方插件正式发布!

作者:刘军 最受欢迎的 Java 集成开发环境 IntelliJ IDEA 与开源微服务框架 Apache Dubbo 社区强强合作,给广大微服务开发者带来了福音。与 IntelliJ IDEA 2023.2 版本一起,Jetbrains 官方发布了一款全新插件 - Apache Dubbo in Spring Frame…

BAQ压缩MATLAB仿真

本专栏目录: ​​​​​​​全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 我们按照上一期文章的BAQ原理编写MATLAB代码,进行baq压缩与解压缩的全流程验证,并分析BAQ压缩对信号指标造成的影响。 生成3个点目标回波数据,加入高斯噪声,对回波进行BAQ压缩和解BAQ压缩,…

webstrom 快速创建typescript 语法检测的Vue3项目

webstrom 快速创建typescript 语法检测的Vue3项目 若您想为您的Vue 3项目添加TypeScript支持,您需要进行以下步骤: 安装 typescript 和 vitejs/plugin-vue 作为开发依赖项: npm install --save-dev typescript vitejs/plugin-vue创建一个…

uni-app uni.scss内置全局样式变量

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

论文润色的重要性是什么 papergpt

大家好,今天来聊聊论文润色的重要性是什么,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文润色的重要性是什么――探究论文润色在学术研究…

多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测

多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测 目录 多维时序 | MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现SSA-GRU麻雀算法优化门控循环单元多变量时间序列预…

大数据应用开发2-Scala语言各个环境配置

一、首先安装JDK1.8版本(简单过一下) 1.下载与安装 下载Java1.8 地址:Java Downloads | Oracle 中国 点击跳转(下载需要登录甲骨文账号) 下载完成运行 修改安装目录(两个都要改) 复制第一次修改的安装目录 2.配置环…

Python关键字之旅:一步步掌握Python的奥秘

文章目录 一、前言二、关键字1.总表(共35个)2.拆分2.1 False None True2.2 and not or2.3 as from import2.4 assert2.5 async await2.6 break continue2.7 class def2.8 del2.9 if elif else2.10 try except finally raise2.11 for in while2.12 global…

企业计算机服务器中了360后缀勒索病毒如何处理,勒索病毒应对步骤

网络技术的应用与发展,为企业的生产运营提供了有力保障,但也为网络安全威胁埋下隐患。近期,网络上的勒索病毒非常嚣张,严重影响了企业的生产运营。近日,云天数据恢复中心接到很多企业的求助,企业的计算机服…

进程互斥的硬件实现方法-第二十五天

目录 中断屏蔽方法 TestAndSet(TS指令/TSL指令) Swap指令(XCHG指令) 本节思维导图 中断屏蔽方法 概念:利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访…

Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解

Kubernetes 入门 回想 2017 年刚开始接触 Kubernetes 时,碰到 Pod一直起不来的情况,就开始抓瞎。后来渐渐地掌握了一些排查方法之后,这种情况才得以缓解。随着时间推移,又碰到了问题。有一天在部署某个 springboot 微服务时&…

[排序算法]:归并排序(Merge Sort)

概念: 归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法…

Golang 通用代码生成器仙童发布 2.4.0 电音仙女尝鲜版二,改进三大部分生成功能群

Golang 通用代码生成器仙童发布 2.4.0 电音仙女尝鲜版二,改进三大部分生成功能群 Golang 通用代码生成器仙童已发布 2.4.0 电音仙女尝鲜版二及其介绍视频。尝鲜版二改进了三大部分生成功能群。 视频请见: https://www.bilibili.com/video/BV1Q64y1H75…

【开源】基于JAVA语言的独居老人物资配送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4.2 新增物资4.3 查询物资4.4 查询物资配送4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的独居老人物资配送系统,包含了社区档案、…