免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 40286 | 回复: 16
打印 上一主题 下一主题

如何解决switch case不能使用字符串 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-05 13:36 |只看该作者 |倒序浏览
输入的是字符串,如"axx","bxx","cxx"。如何能将输入的字符串直接映射成整数,不使用很多if判断。有什么更巧妙的办法,我试了枚举和数组,还是得if判断,不好
我现在用的是首字符case 'a' case 'b' case 'c',但是用户输入ayy,其结果和axx一样,总是不太好,虽然可选值用户知道。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2009-08-05 13:47 |只看该作者
如果都是3字节的,那么

  *((int32_t *)"axx"),不过这个不是常理表达式,不能直接用在switch中,要不你自己先算出来

论坛徽章:
0
3 [报告]
发表于 2009-08-05 13:56 |只看该作者
字符串长度不定。
另问,定义const char* array[]={"axx","bxx","cxx"};数组,字符串常量"axx","bxx","cxx"在内存空间一定是连续存放吗?是axx0bxx0cxx0这样连续的吗?

论坛徽章:
0
4 [报告]
发表于 2009-08-05 14:00 |只看该作者
还是老实用if else吧

论坛徽章:
0
5 [报告]
发表于 2009-08-05 14:14 |只看该作者
如何没啥好办法就只能写if语句了,需要8个

论坛徽章:
0
6 [报告]
发表于 2009-08-05 14:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2009-08-05 14:34 |只看该作者
4楼的问题谁知道吗?如果地址空间连续,可以用"bxx"-"axx"计算不同的差值,区分不同的输入字符串。我测试了是好用,但是担心地址不连续

论坛徽章:
0
8 [报告]
发表于 2009-08-05 15:37 |只看该作者
字符串常量"axx","bxx","cxx"在内存空间不一定是连续存放的

论坛徽章:
0
9 [报告]
发表于 2009-08-05 16:21 |只看该作者
一个字母一case

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
10 [报告]
发表于 2009-08-05 17:57 |只看该作者
如果要求不是特别高,可以楼主可以考虑hash

string->int
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP