第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.h

2023-10-10 15:32

本文主要是介绍第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.h,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先说一下这个flags文件夹下的两个文件:
command_args.h和command_args.cpp。
头文件中只定义了一个类:class CommandArgs{}
看下来这个类的作用是一个参数集管理类,它将很多参数看成一个集,集中进行管理。有一些功能:给参数赋默认值、给参数写一个参数描述,给参数通过命令行来赋值等等,程序里会体现。
.h和.cpp两个一起定义了完整的CommandArgs,由于.cpp文件略长,所以分两篇来写。
这篇是看了个大概的一些注释,其中还存留一些不清楚的地方,后续慢慢看还会细化。

好了,贴代码及注释:


#ifndef G2O_COMMAND_ARGS_H
#define G2O_COMMAND_ARGS_H#include <string>
#include <vector>
#include <iostream>
#include <sstream>/*** \brief Command line parsing of argc and argv.** Parse the command line to get the program options. Additionally,* we can store the config in a file and reload a parameter set from* this file.*/
//该类用于解析用户输入的参数,同时也对程序需要的参数提供默认值及文档说明。
/*** 这个类看起来有点像参数描述集的感觉:* 首先_args[]成员存储了参数的所有描述,每个描述都是一个CommandArgument小结构体* _leftOvers和_leftOversOptional还没看明白????* _progName成员记录了是哪个程序的参数描述集* _banner成员用于给一个参数描述集设定一个标示,有了标示之后可以切换调用不同参数描述集**** 这里整体来说一下这个类:* 首先定义了结构体CommandArgument,这个结构体就是参数后面的描述块,其中记录了参数的各种信息。* 再看成员函数:* parseArgs()用于解析命令行传入的参数自定义值,传入了就将默认值覆盖掉。解析成功返回true。** 一堆重载的param()函数,用于往_args[]中添加参数描述块,同时会给参数赋默认值。** paramLeftOver()用于往_leftOvers和_leftOversOptional中添加描述块** 因为_banner是protected的,所以必须要有getBanner()和setBanner()来读取和设定_banner的值** parsedParam()函数用于查看一个参数是否由命令行设置新值并成功解析。也就是查看一个参数描述块中的parsed属性值,* 这个属性值只有在读命令行参数时,也就是调用parseArgs()函数时才会被置为true,在用param()设定默认值时是不会被置为true的。** printParams()、type2str()、str2arg()、arg2str()和trim()都是一些小功能函数。**/
class CommandArgs
{
public:/*** 这个结构体就是参数背后链接的关于参数的说明块,有name type等等说明,它跟参数的链接通过data指针进行链接。* 整个来看还是外部参数的一个描述结构体,并不会真正的去存储参数。** 结构体成员CommandArgument。* 这个结构体用于记录参数的特性信息,仅是记录参数信息,并不会真正存储参数和参数值。* string name:参数名称* string description:参数的一些具体描述* int type:参数类型,这里用int值来表示类型,在command_args.cpp中有枚举定义:* enum CommandArgumentType* {CAT_DOUBLE, CAT_FLOAT, CAT_INT, CAT_STRING, CAT_BOOL, CAT_VECTOR_INT, CAT_VECTOR_DOUBLE};* void* data :指向参数的指针。就是这个指针链接外部的参数变量。* bool parsed :是否已通过命令行解析性* bool optional :是否为可选参数*/struct CommandArgument{std::string name;std

这篇关于第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.h的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/181370

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用