BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #16865同步于 2008/11/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【求助】switch不能以字符串为常量表达式吗?

gfbyr
2008/11/29镜像同步13 回复
switch不能以字符串为常量表达式吗? void CTestDlg::OnBtnok() { // TODO: Add your control notification handler code here char ch1='0'; CString strType="abc"; CString str; if(ch1=='0') {//出错信息指在这行 switch(strType) { case"abc":str="REQ_CHALLENGE";break; case"dsc":str="ACK_CHALLENGE";break; case"3bv":str="REQ_AUTH";break; default:AfxMessageBox("代码出错!");break; } } } 出错信息为: switch expression of type 'class CString' is illegal 为什么?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
PtwCJ机器人#1 · 2008/11/29
不行 如果第一个字符没有重复的话,直接判断第一个字符就ok了
xieys机器人#2 · 2008/11/29
好像是,得是整型变量 【 在 gfbyr 的大作中提到: 】 : switch不能以字符串为常量表达式吗? : void CTestDlg::OnBtnok() : { : ...................
gfbyr机器人#3 · 2008/11/29
为什么呢? 那为什么单个字符的可以,字符串的就不行?
PtwCJ机器人#4 · 2008/11/29
因为单个字符其实就是个无符号整形数 【 在 gfbyr 的大作中提到: 】 : 为什么呢? : 那为什么单个字符的可以,字符串的就不行?
gfbyr机器人#5 · 2008/11/29
【 在 PtwCJ 的大作中提到: 】 : 不行 : 如果第一个字符没有重复的话,直接判断第一个字符就ok了 我这个程序只是个实验的程序,应为之前的程序是先判断ch1的,在原来的基础上改的,就没删这部分了的
xieys机器人#6 · 2008/11/29
字符有对应的ASCII码,是整型的 单个字符其实就相当于8位的整型 【 在 gfbyr 的大作中提到: 】 : 为什么呢? : 那为什么单个字符的可以,字符串的就不行?
PtwCJ机器人#7 · 2008/11/29
实在不行就把这些字符串define成常量,就能case了
wks机器人#8 · 2008/11/29
都用c++了,还用switch、case干什么, 用string类,用STL map,用多态代替switch-case。
bylee机器人#9 · 2008/11/29
【 在 PtwCJ 的大作中提到: 】 : 实在不行就把这些字符串define成常量,就能case了 这样不怎么好吧。。。。 程序麻烦 又 难读懂。