C++, 微軟雅黑, 黑體, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">為了處理字符串方便,C++++提供了很多字符串處理函數(shù),使用這些函數(shù)需要包含cstring,如下形式:

    #include<cstring>

   為了處理字符串方便,C++提供了很多字符串處理函數(shù)

下面具體介紹其中常用的函數(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(s1s2)

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(s1s2)

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.