除了科學計算外,計算機最主要的用途是文書處理。有一系列字元組成的乙個處理單元稱為字串,c++中的字串是用一對雙引號括起來、由'\0'作為結束符的一組字元。
字串符合陣列的兩個特性:所有元素型別都是字元型,字串中的字元有先後的次序,所以通常用乙個字元陣列來儲存字串。如將「hello,world!」這個字元儲存在字元陣列中:
char ch=;
注意末尾要加乙個'\0',陣列長度是字串長度再加1.
或者
char ch=;
或者
char ch="hello,world";
注意:
1.不包含任何字元的字串稱為空字串。空字串用一對雙引號表示,即「」。空字串佔乙個位元組的空間,這個位元組中存放的是乙個'\0'.
2.在c++中,'a'和「a」是不一樣的,前者表示乙個字元常量,在記憶體中佔1個位元組,裡邊存放字元a的內碼值,後者是乙個字串,用乙個字元陣列儲存,它佔2個位元組空間,第乙個位元組存放字母a的內碼值,第二個位元組存放'\0'.
三種方法
如定義乙個字元陣列ch,要輸入乙個字串放在ch中,可以直接:
cin>>ch;
如上操作將導致鍵盤輸入的字元依次存放在ch陣列中,直到讀入乙個空白字元為止。要輸出ch的內容可以用:
cout《這時,ch陣列中的字元依次被顯示在顯示器上,直到遇見'\0'.
注意:使用》輸入字串時不能輸入空白字元,即不能包含如空格、回車、tab鍵。使用》輸入字串不能控制輸入的字串長度,在用鍵盤輸入過程中,不會檢查輸入的字元個數是否超過了陣列長度。輸入字元個數超過陣列長度,就會占用不屬於該陣列的空間,這種現象就是記憶體溢位。記憶體溢位會導致一些無法預知的錯誤。所以使用》輸入字串時,最好設定一些提示資訊告知允許的最長字串長度。
陣列不能直接用cin和cout物件輸入輸出。陣列的輸入輸出是通過輸入輸出它的每乙個元素實現的。但當用乙個字元陣列儲存乙個字串時是特例!,字元陣列能直接輸入輸出。用》輸入乙個字串時,必須注意空白字元和記憶體溢位。
使用cin的成員函式getline實現:
cin.getline(字元陣列,陣列長度,結束標記);
它從鍵盤接受乙個包含任意字元的字串,直到遇見了指定的「結束標記」或達到了陣列長度減1。支援輸入空白字元 如空格、回車、tab鍵等操作。結束標記可以 不設定,此時預設回車為結束標記。如:
char ch1[80];
char ch2[90];
cin.getline(ch1,80,'.');
cin.getline(ch2,90);
//統計一段文字中的單詞個數
#include using namespace std;
int main()
cout << "單詞個數為:" << num << endl;
return 0;
}
常見的有:複製、拼接、比較等。字串是以陣列的形式儲存,所以不能用ch1=ch2,也不能用ch1>ch2這種系統內建運算子操作。
字串賦值必須有乙個迴圈來完成對應元素之間的賦值。字串的比較也是通過比較 兩個字元陣列的對應元素實現。c語言提供了處理字串的函式庫cstring,c++也可以使用這些函式。
strcpy(dst,src)
將字串從src複製到dst。函式返回值是dst的位址
strncpy(dst,src,n)
至多從src複製n個字元到dst。函式返回值是dst的位址
strcat(dst,src)
將src拼接到dst後,函式返回值是dst的位址
strncat(dst,src,n)
從src至多取n個字元拼接到dst後。函式返回值是dst的位址
strlen(s)
返回字串s的長度,即字串中字元個數(不包括'\0')
strcmp(s1,s2)
比較s1和s2。如果s1>s2,返回值為正,s1=s2返回值為0,s1strncmp(s1,s2,n)
與strcmp型別,這是至多比較n個字元。
strchr(s,ch)
返回乙個指向s中第一次出現ch字元的位址。
strrchr(s,ch)
返回乙個指向s中最後一次出現ch字元的位址。
strstr(s1,s2)
返回乙個指向s1中第一次出現s2的位址
字串 C 學習筆記之 字串和字串流
字元陣列,也就是存放字元型別資料的陣列,只不過字元陣列的結尾必須是 0 c 已經提供了一些字串處理函式,這些函式被封裝在標頭檔案和 中。此外,為了更方便地對字串進行操作,c 中定義了乙個 string 類,可以在使用的時候包含標頭檔案。此外,可以用乙個字串類變數或者字元陣列或者字元直接對字串類變數進...
c學習之指標與字串
字串可以用陣列 指標常量 或指標變數表示,如下 char str1 hello world 事實上是把字串的位址賦給指標或變數 char str2 12 hello world 注意 陣列只能在定義時賦初值。若寫成char str2 12 str2 12 hello world 是錯誤的。鍵盤輸入 ...
C 之字串類學習總結
一 回顧c語言對字串的實現 一般我們在c語言要實現對字串操作的話,一般是採用字元陣列或者一組函式來實現的,為啥這樣做呢,那是因為c語言裡面根本就沒有字串型別的關鍵字 而且c語言也支援自定義型別,所以更加無法獲得字串型別 為了解決這個問題,在c 中,引入了自定義型別,而且可以通過類來完成對字串型別的定...