如果你使用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语句相关推荐

  1. java break在switch_java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析 java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下 ...

  2. java的case_java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; .. ...

  3. java case switch面试_Java基础篇——Java中switch case语句用法及注意事项面试题9期

    本文主要说一说关于switch case语句用法及注意事项,应对面试官的提问.希望可以帮助那些对switch存在错误和各种细节问题的"码友". switch-case注意事项 sw ...

  4. java switch case语句_在Java中使用switch Case语句的例子

    当我们有多个选项,并且需要为每个选项执行不同的任务时,就需要使用Switch case语句. Switch case语句的语法如下-switch (variable or an integer exp ...

  5. java中switchcase用法,java中的switch case语句使用详解

    java中的switch case语句 switch-case语句格式如下: ? swtich()变量类型只能是int.short.char.byte和enum类型(JDK 1.7 之后,类型也可以是 ...

  6. 在switch case 语句中能否使用continue 关键字?为什么?

    在switch case 语句中能否使用continue 关键字?为什么? #include <stdio.h>   int main()   {       int a;       p ...

  7. python中case的用法_用 Python 实现简单的 switch/case 语句

    在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于有一定经验的Python玩家不得不承认,的确如此 ...

  8. python中没有switch-case_Python为什么没有switch/case语句?

    与我之前使用的所有语言都不同,Python没有switch/case语句.为了达到这种分支语句的效果,一般方法是使用字典映射: def numbers_to_strings(argument): sw ...

  9. C语言switch中break的作用,C语言中switch...case语句中break的重要性

    在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...

最新文章

  1. Docker上的虚拟网络-Weave Net
  2. 手机站点开发及手机中图片加速显示img的Canvas方法
  3. ELK 日志管理系统,再次尝试记录
  4. 转-- iOS 30多个iOS常用动画,带详细注释
  5. Apache Camel 3只有2个月的路程
  6. matlab自动排版,工具方法| Matlab 简单绘图与排版
  7. 【BZOJ4653】区间,离散化+线段树
  8. c# 为你的Form实现动画的效果
  9. 根据元素相对位置来控制滚动条
  10. 20190109每日一句
  11. js数据的编码和解码
  12. 《测绘管理与法律法规》——测绘质量管理体系
  13. 在计算机网络中 将网络的层次结构图,计算机网络基础试卷8
  14. 谷歌Chrome浏览器无法打开网页,提示您与此网站之间建立不安全连接【解决】
  15. 在OpenCV里车牌识别的方法1
  16. 积分运算电路的设计方法详细介绍
  17. 【Android】DatePicker时间选择器
  18. Mp3帧分析(数据帧)
  19. Latex常见符号对照表
  20. 【Materials Studio学习六】构建固液表面

热门文章

  1. 差异基因分析:fold change(差异倍数), P-value(差异的显著性)
  2. PubChem分子库
  3. LaTeX 中表格的用法总结(四)——三线表和复杂的表格
  4. python函数对变量的作用遵守原则有哪四条_创建一个包含四个参数的函数
  5. JIPB:白洋组综述根系微生物组群落构建及其对植物适应性的贡献
  6. 报告视频录制:腾讯会议录屏+人像画中画特效
  7. EI:天大王灿+昆士兰郭建华揭示生物气溶胶是猪场耐药基因的重要传播途径
  8. 【不容错过】12月10日:纳米孔测序科研团队大会NCM 2020亚太区特别专场
  9. Cell Host综述-建立因果关系:合成菌群在植物菌群研究中的机会
  10. java中getinputstream_解析request.getInputStream()得到的流