[問題] 字串比較的問題

看板Programming作者 (哼!)時間18年前 (2007/02/17 21:05), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/12 (看更多)
※ [本文轉錄自 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

02/17 20:17,
我會建議用 map 做 lookup
02/17 20:17
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.31.138.33

02/17 23:52, , 1F
就算能用 switch, 也不如用 map
02/17 23:52, 1F
文章代碼(AID): #15rlscwZ (Programming)
討論串 (同標題文章)
文章代碼(AID): #15rlscwZ (Programming)