前言:在C++ 中 switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。

1:通过枚举来实现switch 语句中的 expression

// 定义信号枚举常量
enum SIGNALSET
{RED, YELLOW, BLACK, WHITE,BLUE
};void enum_iterator() {for (int i = RED; i <= WHITE; i++){// switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。switch (i){case RED:cout << "RED index= " << i << endl;break;case YELLOW:cout << "YELLOW index= " << i << endl;break;case BLACK:cout << "BLACK index= " << i << endl;break;case WHITE:cout << "BLACK index= " << i << endl;break;default:break;}}
}int main()
{enum_iterator();
}打印结果
RED index= 0
YELLOW index= 1
BLACK index= 2
BLACK index= 3

2:通过map的方式来实现switch 语句中的 expression

map<string, int> control_param = {{ "RED", 1 },{ "YELLOW", 2 },{ "BLACK",3 },{ "WHITE",4 },{ "BLUE",5 }
};/**如果语法中大量使用if…else语句会造成代码臃肿,if语句C++语法中switch…case中case只能是整形变量,这里提供了一种思路,用map方法使健与值对应,这样字符串string类型与int型便对应上了,便可以实现匹配string。*/
void Func_Mapa(int* key, const string value) {// [] 实现的就是从一个map中查找一个key,如果找到就返回对应的内容,如果没有找到,则返回空字符串int caseKey = control_param[value];switch (caseKey){case 1:*key = 1;break;case 2:*key = 22;break;case 3:*key = 3;break;case 4:*key = 4;break;case 5:*key = 55;break;default:break;}cout << "switch key: " << *key << endl;}int main()
{int testKey = 0;Func_Mapa(&testKey, "YELLOW");
}打印结果
switch key: 22

C++ : switch:switch string的两种用法相关推荐

  1. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast...

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  2. jsp中include的两种用法

    1.两种用法 第一种:include指令:通过file属性来指定被包含的页面,当JSP转换成Servlet时引入指定文件,一般不需要写头 <%@ pagecontentType="te ...

  3. java sort 第二个参数_详解java Collections.sort的两种用法

    Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static > void sort(List list) { l ...

  4. java中String的七种用法

    转载:http://www.open-open.com/home/space.php?uid=2869&do=blog&id=8764 这一两天在学习string的一些用法,记得在来北 ...

  5. C++ operator两种用法【转】

    C++中的operator,有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).下面分别进行介绍: 1.operator ...

  6. html如何让a标签提交表单提交,html post请求之a标签的两种用法解析

    这篇文章主要介绍了html post请求之a标签的两种用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧 html post请求之a标签的两种用法 ...

  7. html post举例,html post请求之a标签的两种用法举例

    html post请求之a标签的两种用法举例 1.使用ajax来发起POST请求 HTML代码如下:发起POST请求a> JQuery代码如下:$(".a_post").on ...

  8. String有两种赋值方式

    String有两种赋值方式,第一种是通过"字面量"赋值. String str = "Hello"; 第二种是通过new关键字创建新对象. String str ...

  9. include virtual引入html文件,ASP文件引用include file和include virtual两种用法

    在 ASP 编程中,我们经常遇到需要重复使用的模块代码,通常我们将这些模块代码保存为一个单独的文件,需要使用此模块代码时,在程序中通过 #include 指令引用此文件,这样使得工作效率和程序可读性大 ...

最新文章

  1. 红帽技术开放日:参与开源社区不只有贡献代码这一种方式
  2. 一文掌握RNA seq,RNA seq课程大汇总
  3. MySQL Percona PXC集群实现MySQL主从复制强一致性
  4. linux下watch常见用法,watch命令详解(linux)
  5. Sharepoint域账户,运行Power Shell报错
  6. 十四、Python第十四课——文件和异常
  7. Word2Vec学习笔记(三)续
  8. 剑与远征服务器维修,剑与远征怎么换区 剑与远征在哪里切换新的服务器
  9. Ubuntu10下SSH2协议安装
  10. 相似文档查找算法之 simHash
  11. Fis3的前端工程化之路[三大特性篇之内容嵌入]
  12. mysql 练习题网站_mysql练习题
  13. ColorUI高颜值组件库,传授使用速成的方法和快速脱坑的技巧,顺便填坑
  14. 腾讯云带宽收费标准价格表
  15. 软件单元黑盒测试,黑盒测试与白盒测试
  16. 桌面视频录制软件有哪些?怎么简单又快地录制视频?
  17. 推荐一个 github 项目 spider163,抓取网络数据,歌曲评论等数据
  18. puk码怎么查询_手机SIM卡PUK如何查询?怎么找PUK码?
  19. Python数据可视化之散点图和折线图
  20. ZOJ - 4049 Halting Problem 题解【c++】

热门文章

  1. matplotlib简单应用
  2. uniapp项目中使用阿里图标
  3. c语言大数组怎么定义,C语言中数组定义方式
  4. 计算机网络1-计算机网络的概念、功能、分类、标准化
  5. 无法保存在html是表格里,excel表格不能保存数据库中-为什么数据库中的表不能修改保存...
  6. 送你一朵小红花,愿你新的一年平安喜乐
  7. 在腾讯轻量云Linux上搭建 CSGO 服务器
  8. Selenium——浏览器设置
  9. d:/aaa下面有一个视频文件 复制到d:/bbb下面
  10. 鼠标左键会阻止定时器_炫彩“硬钢”专为右手玩家打造 雷柏VT30幻彩RGB游戏鼠标评测...