在C++中对字符串std::string使用switch/case语句
如果你使用C语音的string,也就是char *,是可以放在switch/case语句中的。
在C++中是不能对字符串string使用switch/case语句的,这里的string指的是std::string。
下面这个方法来自 Stack Overflow:Evaluate a string with a switch in C++ - Stack Overflow
你需要把字符串转换为整数,然后判断:
//这里使用了自己做的HASH函数,方便快捷,但不够安全
constexpr unsigned int str2int(const char* str, int h = 0)
{return !str[h] ? 5381 : (str2int(str, h+1) * 33) ^ str[h];
}switch (str2int(s.c_str))
{case str2int("Value1"):break;case str2int("Value2"):break;
}
我在stackoverflow看到了有人用map来解决这个问题,但我不怎么喜欢。
上面那个HASH算法毕竟比较容易冲突,更好的方法是使用官方的哈希函数,如md5, sha256。
在C++中对字符串std::string使用switch/case语句相关推荐
- java break在switch_java中switch case语句需要加入break的原因解析
java中switch case语句需要加入break的原因解析 java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下 ...
- java的case_java中的switch case语句使用详解
java中的switch case语句 switch-case语句格式如下: switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; .. ...
- java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期
本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问.希望可以帮助那些对switch存在错误和各种细节问题的"码友". switch-case注意事项 sw ...
- java switch case语句_在Java中使用switch Case语句的例子
当我们有多个选项,并且需要为每个选项执行不同的任务时,就需要使用Switch case语句. Switch case语句的语法如下-switch (variable or an integer exp ...
- java中switchcase用法,java中的switch case语句使用详解
java中的switch case语句 switch-case语句格式如下: ? swtich()变量类型只能是int.short.char.byte和enum类型(JDK 1.7 之后,类型也可以是 ...
- 在switch case 语句中能否使用continue 关键字?为什么?
在switch case 语句中能否使用continue 关键字?为什么? #include <stdio.h> int main() { int a; p ...
- python中case的用法_用 Python 实现简单的 switch/case 语句
在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于有一定经验的Python玩家不得不承认,的确如此 ...
- python中没有switch-case_Python为什么没有switch/case语句?
与我之前使用的所有语言都不同,Python没有switch/case语句.为了达到这种分支语句的效果,一般方法是使用字典映射: def numbers_to_strings(argument): sw ...
- C语言switch中break的作用,C语言中switch...case语句中break的重要性
在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...
最新文章
- Docker上的虚拟网络-Weave Net
- 手机站点开发及手机中图片加速显示img的Canvas方法
- ELK 日志管理系统,再次尝试记录
- 转-- iOS 30多个iOS常用动画,带详细注释
- Apache Camel 3只有2个月的路程
- matlab自动排版,工具方法| Matlab 简单绘图与排版
- 【BZOJ4653】区间,离散化+线段树
- c# 为你的Form实现动画的效果
- 根据元素相对位置来控制滚动条
- 20190109每日一句
- js数据的编码和解码
- 《测绘管理与法律法规》——测绘质量管理体系
- 在计算机网络中 将网络的层次结构图,计算机网络基础试卷8
- 谷歌Chrome浏览器无法打开网页,提示您与此网站之间建立不安全连接【解决】
- 在OpenCV里车牌识别的方法1
- 积分运算电路的设计方法详细介绍
- 【Android】DatePicker时间选择器
- Mp3帧分析(数据帧)
- Latex常见符号对照表
- 【Materials Studio学习六】构建固液表面
热门文章
- 差异基因分析:fold change(差异倍数), P-value(差异的显著性)
- PubChem分子库
- LaTeX 中表格的用法总结(四)——三线表和复杂的表格
- python函数对变量的作用遵守原则有哪四条_创建一个包含四个参数的函数
- JIPB:白洋组综述根系微生物组群落构建及其对植物适应性的贡献
- 报告视频录制:腾讯会议录屏+人像画中画特效
- EI:天大王灿+昆士兰郭建华揭示生物气溶胶是猪场耐药基因的重要传播途径
- 【不容错过】12月10日:纳米孔测序科研团队大会NCM 2020亚太区特别专场
- Cell Host综述-建立因果关系:合成菌群在植物菌群研究中的机会
- java中getinputstream_解析request.getInputStream()得到的流