为了处理字符串方便,C++提供了很多字符串处理函数
C++, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">为了处理字符串方便,C++++提供了很多字符串处理函数,使用这些函数需要包含cstring,如下形式:
#include<cstring>
下面具体介绍其中常用的函数。
1.int strlen(const char*s)(字符串长度函数)
求字符指针s所指字符串中第一个结束符’\0’前的字符个数。const表示不允许修改s所指的字符串。s可以是字符数组的名称。
例如:
char s[100]=”HelloWorld!”;
char t[100]=”12345\06789\0”;
cout<<strlen(s)<<endl; //输出12
cout<<strlen(t)<<endl; //输出5
2.char* strcpy(char*sl,constchar*s2)(字符串复制函数)
函数将字符串s2复制到字符串s1,并返回s1。很显然,s1必须有足够的空间来存储复制过来的s2。例如:
char sl[20];
char s2[]=”Goodluck”;
strcpy(s1,s2);
cout<<s1<<endl; //输出Good luck
strcpy函数可以将结束符一起复制过去,以上复制操作也可以直接写成:
strcpy(s1,”Goodluck”);
3.char* strcat(char*sl,constchar*s2)(字符串连接函数)
函数将字符串s2连接到字符串s1后面,并返回s1。很显然,s1也必须有足够的空间来
存储由原来的s1和s2构成的新s1字符串。例如:
char sl[20]=”Goodluck”;;
char s2[]=”toyou!”;
strcpy(s1,s2);
cout<<sl<<endl; //输出Good luck to you!
连接后的s1的有效字符长度为17,包括结束符在内,sl至少需要18个字符长度,否则连接是错误的。
4.int strcmp(const char*sl,const char*s2)(字符串比较函数)
函数比较s1和s2字符串的大小,并返回比较的结果:
(1)若s1大于s2,则返回一个正整数。
(2)若sl等于s2,则返回0。
(3)若s1小于s2,则返回一个负整数。
字符串比较规则:自左向右按ASCII码值大小进行比较,直至出现一对不同字符或者遇
到结束符为止。例如:
strcmp(“ABC”,”abc”) //返回负整数,前面字符串小
strcmp(”ABC”,”ABC\Oabc”) //返回0,二者相等,’\0’后面不是有效字符
strcmp(”ABC”,”AB”) //返回正整数,前面的大,可以理解成’C’比’\O’大
strcmp(”AB”,”ABC”) //返回负整数,前面的小,可以理解成’\0’比’C’小
可以根据比较结果来进行字符串排序操作。
5.char* strlwr(char*s)(字符串大写变小写)
将字符串s的所有大写字母转换成小写字母。
6.Char* stmpr(char*S)(字符串小写变大写)
将字符串s的所有小写字母转换成大写字母。
除了上面的几个函数以外,经常使用的还有:char* stmcpy(char*,constchar*,size_t)(指定字符个数的复制函数)、intstrcmp(const char*,const*char,size_t)(指定长度的比较函数)、char* strstr(const char*,const char*)(查找后面的字符串在前面字符串中的位置)和char* stmcat(char*,const char*,size_t)(指定字符个数的连接函数)。
【例5-12】输出几个字符串中最大的串。
#include<iostream.h>
#include<cstring>
int main()
{
char s[5][50]={"HelloWorld!",
"Good luck toyou!",
"How are you?",
"Moon River",
"I love this book."};
int max=0;
for(int i=1;i<5;i++)
if(strcmp(s[i],s[max])>0)max=i; //记录最大串的位置即可
cout<<"最大的字符串是:"<<s[max]<<endl;
return 0;
}
程序运行结果:
最大的字符串是:Moon River
【例5-13】编写程序删除字符串中的指定字符。
#include<iostream.h>
#include<cstring>
intmain()
{
char s[100]="I love thisprogram.";
char c;
cout<<"请输入要删除的字符:";
c=cin.get();
int i,j;
for(i=j=0;s[i]!='\0';i++)
{
if(s[i]!=c)
{
s[j]=s[i];
j++;
}
}
s[j]='\O';
cout<<"删除后的字符串为:"<<s<<endl;
return 0;
}
程序运行结果:
请输入要删除的字符:o
删除后的字符串为:I lve this program.0.