C 風格字串 (c primer)

2021-06-21 14:53:09 字數 1648 閱讀 4535

字串字面值的型別就是 const char 型別的陣列。c++ 從 c 語言繼承下來的一種通用結構是c 風格字串,而字串字面值就是該型別的例項。實際上,c 風格字串既不能確切地歸結為 c 語言的型別,也不能歸結為 c++ 語言的型別,而是以空字元 null 結束的字元陣列:

char ca1 = ;        // no null, not c-style string

char ca2 = ; // explicit null

char ca3 = "c++"; // null terminator added automatically

const char *cp = "c++"; // null terminator added automatically

char *cp1 = ca1; // points to first element of a array, but not c-style string

char *cp2 = ca2; // points to first element of a null-terminated

char

array

ca1 和 cp1 都不是 c 風格字串:ca1 是乙個不帶結束符 null 的字元陣列,而指標 cp1 指向 ca1,因此,它指向的並不是以 null 結束的陣列。其他的宣告則都是 c 風格字串,陣列的名字即是指向該陣列第乙個元素的指標。於是,ca2 和ca3 分別是指向各自陣列第乙個元素的指標。

c 風格字串的標準庫函式

cstring 是 string.h 標頭檔案的 c++ 版本,而 string.h 則是 c 語言提供的標準庫。

表 4.1. 操縱 c 風格字串的標準庫函式

strlen(s)

returns the length of s, not counting the null.

返回 s 的長度,不包括字串結束符 null

strcmp(s1, s2)

compares s1 and s2 for equality. returns 0 ifs1 == s2, positive value if s1 > s2, negative value if s1 < s2.

比較兩個字串 s1 和 s2 是否相同。若 s1 與 s2 相等,返回 0;若s1 大於 s2,返回正數;若 s1 小於 s2,則返回負數

strcat(s1, s2)

將字串 s2 連線到 s1 後,並返回 s1

strcpy(s1, s2)

copies s2 into s1. returns s1.

將 s2 複製給 s1,並返回 s1

strncat(s1, s2,n)

將 s2 的前 n 個字元連線到 s1 後面,並返回 s1

strncpy(s1, s2, n)

copies n characters from s2 into s1. returnss1.

將 s2 的前 n 個字元複製給 s1,並返回 s1

#include

注意:1.永遠不要忘記字串結束符 null

2.呼叫者必須確保目標字串具有足夠的大小(計算字元陣列空間時要算上null)

C風格字串與C 風格字串

c風格字串 對字串進行操作的 c 函式定義在標頭檔案中 1.字串定義 char result 2.字串的最後乙個字元是null字元 0 可以通過這個字元確定字串的結尾。3.strlen 返回的是字串的大小 因此,分配空間的時候,需要比字串的實際空間大1.e.g.char copystring con...

C風格字串與C 風格字串

c風格字串 對字串進行操作的 c 函式定義在標頭檔案中 1.字串定義 char result 2.字串的最後乙個字元是null字元 0 可以通過這個字元確定字串的結尾。3.strlen 返回的是字串的大小 因此,分配空間的時候,需要比字串的實際空間大1.e.g.char copystring con...

c風格字串與c風格字串陣列

include includeusing namespace std int main 輸出結果 0034ff10 0034ff10 0034ff04 013bdc80 char str abcd 先在文字常量區為 abcd 常量分配5b,接著在棧裡為指標str分配4b,並接收 abcd 字串的首位...