先看看switch在C++裡的定義:
基於整型運算式的值允許在代碼的多個部分的中選擇。
switch ( expression ) case constant-expression : statement [default : statement]
switch中的運算式必須是整型、字元或枚舉量值。
也就是說我不能這樣用:
string s="123";switch(s){ case "1":{ break; } case "23":{ break; } 、、、}
這個糾結啊(C#,JS是可以判斷字串的),為了能夠使用switch語句,只能把字串與數值一一對應了,不過這樣也很麻煩。比如:
int getIndex(std::string *s,std::string str){int index;for(int i=0;i<s->length();i++){if(s[i]==str){index=i;break;}}return index;}int main(){string str="12",ss;string s[10]={"123","12"};int i=getIndex(s,str);switch(i){case 1:{ss+="100";break;}default:{ss+="default";break;}}cout<<ss<<endl;}
這種方法還算可以,每次需要增加一個分支就在數組裡加一個字串,並且再增加一個case做處理即可。類似的方法還有:
int main(){string str="12",ss;int i;if(str=="12")i=1;if(str=="123")i=2;switch(i){case 1:{ss+="100";break;}default:{ss+="default";break;}}cout<<ss<<endl;}
這樣做最直接,但如果分支很多的時候,這if語句就會很多了,個人還是比較喜歡第一種,如何你有好的方法,歡迎帖出來交流學習!
作者:kunoy
出處:http://blog.csdn.net/kunoy
申明:作者寫博是為了總結經驗,和交流學習之用。
如需轉載,請盡量保留此申明,並在文章頁面明顯位置給出原文串連。謝謝!