C 學習之 字串

2021-08-19 17:08:05 字數 2239 閱讀 1177

除了科學計算外,計算機最主要的用途是文書處理。有一系列字元組成的乙個處理單元稱為字串,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 中,引入了自定義型別,而且可以通過類來完成對字串型別的定...