字符串大小写转换和字符串的比较

字符串大小写相互转换

【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

 

posted @ 2021-08-11 19:38  时间最考验人  阅读(706)  评论(0编辑  收藏  举报