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";
}
4、 字符串長度函數strlen
函數原型:strlen(const char [ ]);
strlen是string length(字符串長度)的縮寫。它是測試字符串長度的函數。其函數的值為字符串中的實際長度,不包括’\0’在內。
例如:char str[10] = “China”; cout<<strlen(str);
應用舉例:
通過函數調用求三個字符串的最大值:
可以用一個函數max_string來找出n個字符串中的最大者。在main函數中設一個二維的字符數組str,大小為3*30,即三行30列,每行可以容納30個字符。可以把str[0],str[1],str[2]看作三個一維字符數組,它們各有30個元素。可以把它們如同一維數組那樣進行處理。可以用cin分別讀入3個字符串。然後調用max_string函數可以得到最大的字符串,把它放在一維字符數組string中,在函數max_string中輸出最大的字符串。程序如下:
//============================================================================
// Name : C++_array.cpp
// Author : yangbo_hbzjk
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <string>
using namespace std;
int main()
{
void max_string(char str[][30],int i); //函數聲明
int i;
char coutry_name[3][30];
for(i=0;i<3;i++)
{
cin>>coutry_name[i]; //輸入三個國家名
}
max_string(coutry_name,3); //調用max_string函數
return 0;
};
void max_string(char str[][30],int n)
{
int i;
char string[30];
strcpy(string ,str[0]); //使string的值為str[0]的值
for(i=0;i<n;i++)
{
if(strcmp(str[i],string)>0) //如果str[i]>string
{
strcpy(string,str[i]); //將str[i]中的字符串復制到string
}
cout<<endl<<"the largest string is:"<<string<<endl;
}
}