(转载)C++中枚举与字符串相互转换

2023-05-16

  有的时候我们喜欢使用一些外部的文件保存管理一些配置信息,这些配置文件大多都是文本格式例如ini,xml等,这样方便编辑和管理。因此在使用的过程中必然会遇到各种字符串转换问题。
  最常见的便是将字符串的数字转换为对应的整形(integer)或者浮点(float),如果遇到枚举类型,可能便会想当做是整形来处理,但觉得不是特别理想。如果能有办法直接转换为枚举会方便很多。 一个简单的配置文件: 在C++里面有枚举: 如果对于前面两个数值,可以很简单的读取,例如: 对于后面那个枚举,可能就稍微麻烦一点: 如果直接在配置文件里面不保存"cpp"字符串而直接保存枚举值,这里便可以当整形取出来再做类型转换。不过这样不安全,也不好维护,如果枚举内部的定义发生了变化,外部保存的数据自然也就会失效出错。 C++没有(也不可能会有)反射机制,枚举成员在编译以后也已经变成了纯粹的数值,失去了名字。所以想使用字符串作为搜索依据,必须为枚举保留一份名字信息,例如: 这个字符串数组只能预先写好,无论是手动还是通过工具自动生成。然后可以在这个字符串数组里面搜索目标字符串,将找到的结果下标转换为对应的枚举值即可,例如: 解决方案找到了,随之而来的问题就是如何将枚举与所需要的字符串查找表联系起来。如有多个枚举: 枚举不像类或结构体可以定义自己的成员变量,所以查找表只能在外部定义,通过实例化模板类来将他们相互联系起来。例如: 这定义了一个查找表的模板结构体,然后将之前的代码改造为: 然后便可以实现字符串转枚举的功能: 这样一来,最开始的问题就可以简化为: 有了这种方式,自然枚举反转回字符串也很容易了,就不再赘述了。 转载出处: http://a.vifix.us/blog/cpp-convert-string-enum
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(转载)C++中枚举与字符串相互转换 的相关文章

  • 十一、 Debian忘记密码重置

    其方式是在GRUB引导菜单下按 e 进入编辑模式直接修改用户密码 重启VPS xff0c 可以在面板重启也可以在VNC上面使用发送 CTRL 43 ALT 43 DEL 按钮直接重启 xff0c 在图示处按 e 键 xff08 若出现BIO
  • 加入共享宽带,让你的闲置宽带循环利用再变现

    共享经济是近些年来发展的一个热点名词 xff0c 因此大家也会看到一些非常多的共享产品出现在市面上 比如说大家熟悉的共享单车 xff0c 共享汽车共享充电宝等等 xff0c 但是不知道大家有没有听说过共享宽带呢 xff1f 宽带几乎是家家户
  • 一招让NAS自给自足

    网络带来了许多便利 xff0c 但又给生活带来了很多烦恼 xff0c 比如微信文档总是过期 xff0c 关键内容经常找不到 xff0c 照片备份太散乱 最近听朋友说听说前任离婚了 xff0c 我突然想重温下与她昨日的温情 xff0c 可是翻
  • 百度网盘撸用户羊毛是怎么一回事

    最近百度网盘事件闹得沸沸扬扬 xff0c 很多吃瓜小伙伴对这次事件的来龙去买不太清楚 xff0c 今天就给大家八一八百度网盘如何反撸用户引发众怒 百度对于该计划的说明 xff1a 用户参加该计划可贡献闲置网络带宽和电脑存储空间给百度 xff
  • 业务流程节点信息提示

    xfeff xfeff 该模块中主要是为了明确用户操作 让用户具体的知道该进行哪一步操作 xff0c 在登陆系统后 xff0c 系统首页中会有下面类似的流程图 xff1a 当用户完成一项操作后 xff0c 要根据流程提示其他用户进行下一步操
  • UbuntuWSL操作PA的BUG记录——AM_HOME环境变量的设定

    2021年5月更 xff0c 发现WSL2是真的香 xff0c 下次还用 x1f604 2021年4月 血亏 xff0c 建议老实用虚拟机做 xff0c WSL还是有很多未完善的地方 xff0c 不适合新手瞎折腾 问题描述 xff1a 当使
  • windows11编译OpenCV4.5.0 with CUDA(附注意事项)

    windows11编译OpenCV4 5 0 with CUDA 从OpenCV4 2 0 版本开始允许使用 Nvidia GPU 来加速推理 本文介绍最近使用windows11系统编译带CUDA的OpenCV4 5 0的过程 文中使用 特
  • OpenCV—矩阵数据类型转换cv::convertTo

    OpenCV 矩阵数据类型转换cv convertTo 函数 void convertTo OutputArray m int rtype double alpha 61 1 double beta 61 0 const 参数 m 目标矩阵
  • Mysql LIMIT使用

    原文出处 xff1a http www jb51 net article 62851 htm Mysql中limit的用法 xff1a 在我们使用查询语句的时候 xff0c 经常要返回前几条或者中间某几行数据 xff0c 这个时候怎么办呢
  • cookies的理解与chrome查看cookie

    Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存 xff0c 或是从客户端的硬盘读取数据的一种技术 Cookies是当你浏览某网站时 xff0c 由Web服务器置于你硬盘上的一个非常小的文本文件 xff0c 它可以记录
  • 【Qt】Qt多线程开发—实现多线程设计的四种方法

    Qt 使用Qt实现多线程设计的四种方法 文章目录 Qt 使用Qt实现多线程设计的四种方法一 写在前面二 方法一 QThread xff1a 带有可选事件循环的底层API三 方法二 QThreadPool和QRunnable xff1a 重用
  • OpenStack Designate系统架构分析

    前言 OpenStack提供了云计算数据中心所必不可少的用户认证和授权 计算 存储 网络等功能 xff0c 网上已经有不少的文章介绍这些功能的配置 架构分析以及代码详解 但是 针对OpenStack Designate所提供的DNSaaS服
  • 【Qt】Qt线程同步之QWaitCondition

    Qt 线程同步之QWaitCondition 文章目录 Qt 线程同步之QWaitCondition一 简介二 成员函数API xff08 2 1 xff09 等待 wait xff08 2 2 xff09 唤醒一个线程 xff08 2 3
  • Linux下如何用命令连接有线网络

    因为进入tty命令界面 xff0c 想要下东西 xff0c 需要用命令连接有线网络直接输入命令 sudo dhclient eth0
  • Debian下制作deb包

    1 安装相应的编译工具 apt get install dh make dpkg dev debhelper fakeroot build essential Docker中执行dh make出现如下错误 xff1a Cannot get
  • electron在龙芯平台上本地安装使用和打包(二)

    已经打包好的适合在mips平台运行的electron quick start xff0c 点击下载 1 安装electron前的准备 从http www loongnix org index php Electron下载所需软件包 xff0
  • mips版本electron在龙芯平台上的安装

    本文主要讲述如何安装mips版本的electron xff0c 和上两篇不同的是 xff0c 此安装方法只需要用户修改一行代码即可完成 mips架构用户只需要关注本文章的3 2章节 目前用户可以通过此方法安装mips版本的4 1 3 xff
  • 制作PyPI包

    1 环境 本文介绍使用setup py生成pip可以安装的python包以及使用git信息自动生成软件包版本 1 1 python pip版本 python3 version Python 3 7 3 pip 18 1 from usr l

随机推荐

  • python3 对字典去重

    对于一个列表中的多个字典进行去重 1 对key去重 将相同的key合并到一个字典中 2 对元素去重 将一个字典的重复元素去重 代码如下 xff1a span class token comment initializing list spa
  • ffi使用

    编译程序时 xff0c 发现测试用例过不去 xff0c 抽象出其中的测试用例 span class token macro property span class token directive hash span span class t
  • KVM虚拟机内进行GPU计算

    xff08 文章来自作者维护的社区微信公众号 虚拟化云计算 xff09 xff08 目前有两个微信群 kvm虚拟化 和 openstack xff0c 扫描二维码点击 云 交流 xff0c 进群交流提问 xff09 我们知道CUDA是由NV
  • linux下安装及配置jenkins

    jenkins常用的有两种安装方式 xff1a 1 直接下载war包jenkins war xff0c 下载地址https jenkins io download 直接下载 1 1 可以把war包直接部署到servlet容器中 xff0c
  • Ubuntu 中软件的安装、卸载以及查看的方法总结

    说明 xff1a 由于图形化界面方法 xff08 如Add Remove 和Synaptic Package Manageer xff09 比较简单 xff0c 所以这里主要总结在终端通过命令行方式进行的软件包安装 卸载和删除的方法 一 U
  • win10环境下基于anaconda3安装tensorflow的方法以及踩的坑和解决办法

    安装过程 1 首先安装anaconda3 xff0c 下载地址 xff1a https www anaconda com download 2 使用下面的命令创建tensorflow环境 conda create n tensorflow
  • B 站下载教学视频

    B站中的教学视频大都有许多分集 xff0c 而且可能涉及到版权 xff0c 过不了多久可能会失效 xff0c 最好的办法就是先保存下来再说 这里介绍的you get可以下载许多视频网站的视频 xff0c 在此仅介绍B站的下法 虽然速度基本在
  • ssh命令-manpage

    SSH Section User Commands 1 Index Return to Main Contents BSD mandoc NAME ssh OpenSSH SSH 客户端 远程登录程序 总览 SYNOPSIS ssh l l
  • CCF201604-3 路径解析

    题目 xff1a 问题描述 在操作系统中 xff0c 数据通常以文件的形式存储在文件系统中 文件系统一般采用层次化的组织形式 xff0c 由目录 xff08 或者文件夹 xff09 和文件构成 xff0c 形成一棵树的形状 文件有内容 xf
  • powershell批量改文件名递增序号

    目录结构 dir1 file1 jpg dir2 file2 jpg dir3 file3 jpg 把目录下的文件改成目录名 43 001 jpg 需要cd到需要改文件名的目录执行 xff0c 嵌套目录参考get childitem r选项
  • Debian使用apt-get安装软件的问题

    运行环境 xff1a Debian 11 5 正常安装方法 apt get install vim 问题一 xff1a 提示将盘片插入驱动器 34 media cdrom 34 再按回车键 xff0c 如下图 问题二 xff1a 提示软件包
  • 开发必备的100个 Flutter 开源精品项目

    Flutter是谷歌的移动UI框架 xff0c 可以快速在iOS和Android上构建高质量的原生用户界面 Flutter可以与现有的代码一起工作 在全世界 xff0c Flutter正在被越来越多的开发者和组织使用 xff0c 并且Flu
  • 矩阵分解之最小二乘法ALS

    矩阵分解 应用场景是 xff1a 我们要把一个稀疏矩阵分解为两个低秩的矩阵相乘 xff1b 两个低秩的矩阵除了降维之外 xff0c 还分别代表不同的含义 以推荐为例 xff1a 用户点击商品的关系矩阵R则是稀疏的 xff0c 我们分解为两个
  • C/C++使用心得:enum与int的相互转换

    如何正确理解enum类型 xff1f 例如 xff1a enum Color red white blue Color x 我们应说x是Color类型的 xff0c 而不应将x理解成enumeration类型 xff0c 更不应将其理解成i
  • 深度探索C++对象模型

    深度探索C 43 43 对象模型 什么是C 43 43 对象模型 语言中直接支持面向对象程序设计的部分 对于各个支持的底层实现机制 抽象性与实际性之间找出平衡点 需要知识 经验以及许多思考 导读 这本书是C 43 43 第一套编译器cfro
  • QNX Neutrino 基本操作

    安装好QNX Neutrino虚拟机后开始学习QNX Neutrino 基本操作 xff0c 自己有一些Linux基础 xff0c 感觉比较容易上手 如果是之前没有接触过Linux Unix的 xff0c 可以参考一下QNX官网的书 Neu
  • 在iOS上绘制自然的签名

    在iOS上绘制自然的签名 这里有一篇很棒的文章写如何在Android上获取流畅的签名 xff1a Smoother Signatures xff0c 但是我没有找到一篇是写在iOS上如何实现 那么 xff0c 究竟怎么做才能在iOS设备上获
  • xxx is not in the sudoers file解决方法

    用sudo时提示 34 xxx is not in the sudoers file This incident will be reported 其中XXX是你的用户名 xff0c 也就是你的用户名没有权限使用sudo 我们只要修改一下
  • linux-查看端口状态

    Linux如何查看端口状态 方法步族 xff1a 1 在Linux使用过程中 xff0c 需要了解当前系统开放了哪些端口 xff0c 并且要查看开放这些端口的具体进程和用户 xff0c 可以通过netstat命令进行简单查询 2 netst
  • (转载)C++中枚举与字符串相互转换

    有的时候我们喜欢使用一些外部的文件保存管理一些配置信息 xff0c 这些配置文件大多都是文本格式例如ini xff0c xml等 xff0c 这样方便编辑和管理 因此在使用的过程中必然会遇到各种字符串转换问题 最常见的便是将字符串的数字转换