字符串大小写转换和字符串的比较
【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