字串大小寫轉換和字串的比較

時間最考驗人發表於2021-08-11

字串大小寫相互轉換

【1】ASCll碼關係:’A’-‘Z’ 是65~90,’a’-‘z’是97-122,對應大小寫字母ASCll值相差32。在加個迴圈條件即可轉換。

單個字元 c :

大寫變小寫:c + 32 ;

小寫變大寫:c - 32 ;

 char str[10] = "ABcd"
 // 全部轉為小寫
 for(int i=0; i<str.size(); i++)
 {
     if(str[i] >= 'a' && str[i] <= 'z')
     str[i] = str[i] - 32; // 小寫變大寫
     
     // else if(str[i] >= 'A' && str[i] <= 'Z')
     // str[i] = str[i] + 32; // 大寫變小寫
 }
     for(int i=0; i<str.size(); i++)
 {
    cout<<str[i];
 }

【2】c++中transform()函式。

該函式的使用需要引用標頭檔案<algorithm>

 string s1="AAAbbb";
 transform(s1.begin(),s1.end(),s1.begin(),toupper);
 cout<<"全部轉化為大寫:"<<s1<<endl;
 transform(s1.begin(),s1.end(),s1.begin(),tolower);
 cout<<"全部轉化為小寫:"<<s1<<endl;

字串的大小比較

字串比較:是指從左往右對單個字元或字串進行比較大小的操作,一般都是以ASCII碼值的大小作為字元比較的標準。

【比較方法】

  1. c語言strcmp(a, b)函式,比較兩個字串的大小,a < b 返回-1,a == b 返回0,a > b返回1。這裡的比較方式是字典序!

  2. c++ string類定義的字串可以直接進行比較

【注意事項】

  1. 兩個不同長度的字串進行比較時,不是長的字串就一定。如字串s1為ABCE,字串s2為ABCDEF。對 s1 與 s2 進行比較時,s1 的第4個字元是E,s2 的第4個字元是D,而D < E,所以s1 > s2。儘管 s2 比s1長。

  2. 當字串有空格時,空格也參加比較。如s1為 b ook(表示空格),s2 為book,顯示-79,故s1 < s2

  3. 大寫字母和小寫字母的ASCII程式碼值是有區別的,所以,yes > YEs

  4. 當字串全部用英文字母的大寫(或小寫)組成時,字串的大小順序和它們在字典中的順序相同,本質還是ASCll碼的大小比較

  5. 由漢字組成的字串可以參加比較。如李紅 < 王軍。它們的大小實際是由其拼音構成的字串的大小來決定的。上例即:LIHONG < WANGJUN

回車,ASCII碼13 換行,ASCII碼10 空格,ASCII碼32

 

相關文章