C++, 微軟雅黑, 黑體, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">為了處理字符串方便,C++++提供了很多字符串處理函數(shù),使用這些函數(shù)需要包含cstring,如下形式:
#include<cstring>
下面具體介紹其中常用的函數(shù)。
1.int strlen(const char*s)(字符串長(zhǎng)度函數(shù))
求字符指針s所指字符串中第一個(gè)結(jié)束符’\0’前的字符個(gè)數(shù)。const表示不允許修改s所指的字符串。s可以是字符數(shù)組的名稱。
例如:
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)(字符串復(fù)制函數(shù))
函數(shù)將字符串s2復(fù)制到字符串s1,并返回s1。很顯然,s1必須有足夠的空間來存儲(chǔ)復(fù)制過來的s2。例如:
char sl[20];
char s2[]=”Goodluck”;
strcpy(s1,s2);
cout<<s1<<endl; //輸出Good luck
strcpy函數(shù)可以將結(jié)束符一起復(fù)制過去,以上復(fù)制操作也可以直接寫成:
strcpy(s1,”Goodluck”);
3.char* strcat(char*sl,constchar*s2)(字符串連接函數(shù))
函數(shù)將字符串s2連接到字符串s1后面,并返回s1。很顯然,s1也必須有足夠的空間來
存儲(chǔ)由原來的s1和s2構(gòu)成的新s1字符串。例如:
char sl[20]=”Goodluck”;;
char s2[]=”toyou!”;
strcpy(s1,s2);
cout<<sl<<endl; //輸出Good luck to you!
連接后的s1的有效字符長(zhǎng)度為17,包括結(jié)束符在內(nèi),sl至少需要18個(gè)字符長(zhǎng)度,否則連接是錯(cuò)誤的。
4.int strcmp(const char*sl,const char*s2)(字符串比較函數(shù))
函數(shù)比較s1和s2字符串的大小,并返回比較的結(jié)果:
(1)若s1大于s2,則返回一個(gè)正整數(shù)。
(2)若sl等于s2,則返回0。
(3)若s1小于s2,則返回一個(gè)負(fù)整數(shù)。
字符串比較規(guī)則:自左向右按ASCII碼值大小進(jìn)行比較,直至出現(xiàn)一對(duì)不同字符或者遇
到結(jié)束符為止。例如:
strcmp(“ABC”,”abc”) //返回負(fù)整數(shù),前面字符串小
strcmp(”ABC”,”ABC\Oabc”) //返回0,二者相等,’\0’后面不是有效字符
strcmp(”ABC”,”AB”) //返回正整數(shù),前面的大,可以理解成’C’比’\O’大
strcmp(”AB”,”ABC”) //返回負(fù)整數(shù),前面的小,可以理解成’\0’比’C’小
可以根據(jù)比較結(jié)果來進(jìn)行字符串排序操作。
5.char* strlwr(char*s)(字符串大寫變小寫)
將字符串s的所有大寫字母轉(zhuǎn)換成小寫字母。
6.Char* stmpr(char*S)(字符串小寫變大寫)
將字符串s的所有小寫字母轉(zhuǎn)換成大寫字母。
除了上面的幾個(gè)函數(shù)以外,經(jīng)常使用的還有:char* stmcpy(char*,constchar*,size_t)(指定字符個(gè)數(shù)的復(fù)制函數(shù))、intstrcmp(const char*,const*char,size_t)(指定長(zhǎng)度的比較函數(shù))、char* strstr(const char*,const char*)(查找后面的字符串在前面字符串中的位置)和char* stmcat(char*,const char*,size_t)(指定字符個(gè)數(shù)的連接函數(shù))。
【例5-12】輸出幾個(gè)字符串中最大的串。
#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;
}
程序運(yùn)行結(jié)果:
最大的字符串是:Moon River
【例5-13】編寫程序刪除字符串中的指定字符。
#include<iostream.h>
#include<cstring>
intmain()
{
char s[100]="I love thisprogram.";
char c;
cout<<"請(qǐng)輸入要?jiǎng)h除的字符:";
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;
}
程序運(yùn)行結(jié)果:
請(qǐng)輸入要?jiǎng)h除的字符:o
刪除后的字符串為:I lve this program.0.
評(píng)論列表