歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++字符數組函數深度剖析

C++字符數組函數深度剖析

日期:2017/3/1 10:23:26   编辑:Linux編程

1、 連接函數strcat

其函數原型為:strcat(char [ ], const char [ ] );

strcat是string catenate(字符串連接)的縮寫。該函數有兩個字符數組的參數,函數的作用是:將第二個字符數組中的字符串連接到前面字符數組的字符串的後面。第二個自負數組被指定為const,以保證該數組中的內容不會在函數調用期間修改。連接後的字符串放在第一個字符數組中,函數調用後得到的函數值,就是第一個字符數組的地址。

例如:

#include<iostream>

usingnamespace std;

int main()

{

char str1[]="People's Republic of";

char str2[]="China";

cout<<strcat(str1,str2);

};

輸出結果為:Perple’s Republic of China

2、 字符串復制函數

其函數原型為:

strcpy ( char[ ] , const char[ ]);

strcpy是string copy(字符串復制)的縮寫。它的作用是將第二個字符數組中的字符串復制到第一個字符數組中去,將第一個字符數組中的相應字符覆蓋。

上例如果調用strcpy(str1,str2);執行後,str2中的五個字符“China”和”\0”,共六個字符都會復制到數組str1中。

說明:a、在調用strcpy函數時,第一個參數必須是數組名(如str1),第二個參數可以是字符數組名,也可以是一個字符串常量。

例如:strcpy(str1,”China”);

b、可以用strcpy函數將一個字符串中前若干個字符復制到字符數組中去。

例如:strcpy(str1,str2,2);

作用是將str2中前面兩個字符復制到str1中去,然後再加一個’\0’。

C、只能通過調用strcpy函數來實現將一個字符串賦給一個字符數組,而不能用賦值語句將一個字符串常量或字符數組直接賦給一個字符數組。

如下非法:

str1=”China”; //不能將一個字符串常量賦給一個字符數組

str1=str2; //不能將一個字符數組的內容賦給另一個字符數組

str1代表數組地址,是常量,不能被賦值,不能作左值。

3、 字符串比較函數:strcmp

函數原型:strcmp( const char [ ], const char[ ]);

strcmp是string compare(字符串比較)的縮寫。作用是比較兩個字符串。由於這兩個字符數組只參加比較而不應改變其內容,因此兩個參數都加上const聲明。

如下聲明合法:

strcmp(str1,str2);

strcmp(“China”,”Korea”);

strcmp(str1,”Beijing”);

比較的結果由函數值帶回。

a、 如果str1=str2,函數值為0。

b、 如果str1>str2,函數值為一正整數。

c、 如果str1<str2,函數值為一負整數。

字符串比較的規則與其他語言中的規則相同,記對兩個字符串自左至右逐個自負相比(按ASCII碼值大小比較),知道出現不同的字符或遇到’\0’為止。如全部字符相同,則認為相等;若出現不相同的字符,則以第一個不相同的字符的比較結果為准。

不能用以下形式比較:

if(str1>str2)

{

cout<<"yes";

}

字符數組名str1和str2代表數組地址,上面寫法表示將兩個數組地址進行比較,而不是對數組中的字符串進行比較。應為:

if(strcmp(str1,str2)>0)

{

cout<<"yes";

}

Copyright © Linux教程網 All Rights Reserved