【C++ 筆記】字串(String) - part 9
【C++ 筆記】字串(String) - part 9
很感謝你點進來這篇文章。
你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧!
字串(String)
字串是由許多的字元所組成的,但字串實際上它是一個一維陣列,以 null 字元(’\0’)終止符號為結尾。
如下:
1 | char a[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; |
Hello 共有 5 個字元,但實際上在 C++ 中存在於 6 個字元,因多一個 ‘\0’ 表示字串的結尾。
arraysize 因此要寫 6。
也可以寫成這樣:
1 | char a[] = "Hello"; |
但實際上我們也不用那麼麻煩,加上 ‘\0’ 上去,C++ 編譯器會在初始化陣列時自動加上去。
以下是一個範例,輸出以上的說明文字:
1 |
|
輸出結果:
1 | Hello |
可發現 ‘\0’ 沒有在上面,因為 null 字元或是 ‘\0’ 本身就是一個”空”的字元,表示一個字串的結尾。
cstring 函式庫
語法:
1 |
| 序號 | 函數 |
|---|---|
| 1 | strcpy(s1, s2); -> 複製字串 s2 至 s1 |
| 2 | strcat(s1, s2); -> 連接字串 s2 到字串 s1 的結尾,連接字串也可以用 + 號。 |
| 3 | strlen(s1); -> 回傳字串 s1 的長度。 |
| 4 | strcmp(s1, s2); -> 如果 s1 和 s2 是相同的,則回傳 0;如果 s1 < s2 則回傳值小於 0;如果 s1>s2 則傳回值大於 0。 |
| 5 | strchr(s1, ch); -> 回傳一個指標,指向字串 s1 中字元 ch 第一次出現的位置。 |
| 6 | strstr(s1, s2); -> 回傳一個指標,指向字串 s1 中字串 s2 第一次出現的位置。 |
細則可參考:https://www.w3schools.com/cpp/cpp_ref_cstring.asp
以下是一範例,可當作練習:
1 |
|
輸出結果:
1 | 用 strcpy 將 s2 複製到 s3: World! |
string 函式庫
語法:
1 |
string 是一個類別(Class),底部有許多方法(Method)可使用,這要等到學物件導向程式設計(OOP)才會開始接觸之。
可能要到後期才會介紹到此函式庫。
以下是一個範例:
1 |
|
輸出結果:
1 | str3 : runoob |
來源:https://www.runoob.com/cplusplus/cpp-strings.html
總結
本文介紹 C++ 中的字串(String)處理,包括基本概念、C 字串和 C++ 字串的使用。
字串的基本概念
字串是由多個字元組成的一維陣列,並以 null 字元(’\0’)作為結尾。以下範例中為定義字串:
1 | char a[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; |
C 標準函式庫 cstring
本文列出了幾個常用的 C 字串處理函數:
strcpy(s1, s2):複製字串 s2 至 s1。strcat(s1, s2):將字串 s2 連接到 s1 的結尾。strlen(s1):返回字串 s1 的長度。strcmp(s1, s2):比較兩個字串。strchr(s1, ch):查找字元 ch 在 s1 中第一次出現的位置。strstr(s1, s2):查找字串 s2 在 s1 中第一次出現的位置。
參考資料
C++ cstring Library Reference (cstring functions)


