1.字符數組str[ ]
字符數組與普通數組一樣,都是數組,只不過儲存的是字符,而且C和C++都爲它提供了很多函數。
1.初始化
(1) 字符數組可以逐個賦值,類似於 char c[10]; c[0]='I' c[1]='M' 一直像後面賦值,就是將10 個元素分別賦值給c[0]~c[9],也可以用c[10]={' S '.....'E' };的方法賦值。
(2) 用字符串常量來初始化 char str[ ]={"I am happy"}; 也可以也成char str[ ]="I am happy";
注:如果是剛接觸C++的請注意單引號與雙引號的區別。
2.字符數組的賦值和引用
比如a和b都是相同長度和類型的字符數組,我們用 “ a=b ”將b賦值給a是錯誤的。但是 a[0]=b[0]是正確的。
3.字符串及其結束標誌
在我們之前瞭解到了字符數組中,比如用一個一維數組 char str[12]={' I ',' ',' a ',' m ',' ',' h ',' a ',' p ',' p ',' y ' };我們可以看到,空格和字母算起來一共是10個字符。但是我們創建的是一個長度爲12的字符數組,那麼最後兩個位置系統會怎麼辦呢? 那就是用‘\0’自動填補空字符。
我們的小標題是字符串的結束標誌,那麼可以猜到‘\0’就是我們的字符串結束標誌了。也就是遇到‘\0’就代表字符串到此結束,由它前面的字符組成有效字符串。我們往往可以不需要知道字符串的長度而依靠‘\0’來判斷字符串是否結束了。
注:‘\0’代表ASCII碼爲0的字符,是一個不能夠顯示的字符。
4.字符串的輸入和輸出
(1)對於字符數組,我們可以用for循環逐個輸入和輸出。
(2)整個字符串輸入輸出:
char str[20] ;
cin>>str;
cout<<str;
注:在執行cout時,str代表第一個元素也就是str[0]的地址,執行“cout<<str” 代表是從str所指向的第一個元素開始輸出,直到遇見'\0'爲止。輸入時不包括'\0'(系統會自動在你輸入完畢按enter時在後面的單元裏面加)。
5.字符串處理函數對字符串進行操作
頭文件爲string 和string.h.
(1).字符串連接函數 strcat(char[ ],const char[ ])
char str1[30]="People's Pepublic of ";
char str2[ ]="China";
cout<<strcat(str1,str2);
輸出:
People's Republic of China
(2).字符串複製函數strcpy(char[ ],const char[ ])
strcpy將第二個字符數組中的字符複製到第一個字符數組中,並將第一個覆蓋。
char str1[10],str2[ ]="China";
strcpy(str1,str2);
注:在函數中第一個參數是數組名,第二個可以是字符串常量,如:
strcpy(str1,"hello");
也可以用strcpy(str1,str2,num); num 代表數字,是將str2的前num個字符複製到str1中去,再在後面加一個‘\0’.
之前有提到不能用str1=str2直接賦值,現在就能用這個函數賦值了。
(3).字符串比較函數strcmp(const char[ ],const char[ ])
下面的寫法都是合法的:
strcmp(str1,str2);
strcmp("China","Korea");
strcmp(str1,"Beijing");
因爲只參加比較而不改變內容,所以都加const聲明。
比較規則爲兩個字符串從左到右依次比較(按ASCII碼比較大小),直到遇見不同的字符,就以這個字符比較的結果爲準,如果沒有不同的字符,則返回0.如果str1大於str2,則返回正整數,如果小於返回負整數。(與賦值類似,不可以用str1>str2這種表達方法,因爲這代表兩個地址而你想比較的是內容。)
(4).字符串長度函數strlen(const char [ ]);
這個函數測試字符串的實際長度,不包括'\0'在內。
char str[10]="happy";
cout<<strlen(str);
輸出的結果爲5(實際長度)。
以上是對字符的輸入輸出以及一些簡單的處理函數的總結與概括。後面還有繼續介紹。