作者jgpnsgm (哼!)
看板Programming
标题[问题] 字串比较的问题
时间Sat Feb 17 21:05:41 2007
※ [本文转录自 C_and_CPP 看板]
作者: jgpnsgm (哼!) 看板: C_and_CPP
标题: [问题] 字串比较的问题
时间: Sat Feb 17 20:11:52 2007
搜寻"字串"好像没有类似的问题
假设要写一个判断指令的程式
譬如说C的compiler或是接收指令(RS232, Internet)来做相对应的事情
如果指令的格式是int或是其他可以转成int的type
就可以用switch case来做...
但是如果是字串...switch case不支援字串...(C,C++,Java)
一个很直觉的方式是用if else 来做
################## start ###################
char cmd[100];
getCmd(cmd);
if ( strcmp ( cmd, "reboot" ) == 0 )
reboot();
else if ( strcmp ( cmd, "shutdown" ) == 0 )
shutdown();
else if ( strcmp ( cmd, "play" ) == 0 )
play();
else if ....
else if ....
else if ....
################## end #####################
如果有一百个指令...就要写100个if else
如果要用switch case来作....
################## start ###################
char cmd[100];
getCmd(cmd);
switch ( cmd[0] )
{
case 'r':
reboot();
break;
case 's':
shutdown();
break;
case 'p':
play();
break;
default:
break;
}
################## end #####################
这里switch case举的例子比较不好,
在某些指令较短,而且有分类的情况下似乎比较好管理
但是以上这两个方法,看起来应该不是最好的做法
如果switch case能直接支援string应该比较好管理
但不幸的是没有支援
想请问大家的是,这类的程式应该要怎麽写才好呢
还请大家提供一些较好的方法
thanks.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.135.140
※ jgpnsgm:转录至看板 java 02/17 20:13
1F:推 godfat:我会建议用 map 做 lookup 02/17 20:17
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.138.33
2F:推 avhacker:就算能用 switch, 也不如用 map 140.123.19.235 02/17 23:52