【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碼值的大小作為字元比較的標準。
【比較方法】
-
c語言strcmp(a, b)函式,比較兩個字串的大小,a < b 返回-1,a == b 返回0,a > b返回1。這裡的比較方式是字典序!
-
c++ string類定義的字串可以直接進行比較
【注意事項】
-
兩個不同長度的字串進行比較時,不是長的字串就一定大。如字串s1為
ABCE
,字串s2為ABCDEF
。對 s1 與 s2 進行比較時,s1 的第4個字元是E
,s2 的第4個字元是D
,而D < E
,所以s1 > s2。儘管 s2 比s1長。 -
當字串有空格時,空格也參加比較。如s1為
b ook
(表示空格),s2 為book
,顯示-79,故s1 < s2 -
大寫字母和小寫字母的ASCII程式碼值是有區別的,所以,
yes
>YEs
-
當字串全部用英文字母的大寫(或小寫)組成時,字串的大小順序和它們在字典中的順序相同,本質還是ASCll碼的大小比較
-
由漢字組成的字串可以參加比較。如
李紅
<王軍
。它們的大小實際是由其拼音構成的字串的大小來決定的。上例即:LIHONG
<WANGJUN
回車,ASCII碼13 換行,ASCII碼10 空格,ASCII碼32