在C中,并沒有字符串這個數據類型,而是使用字符數組來保存字符串的。
C字符串實際上就是一個以null('\0')字符結尾的字符數組,null字符表示字符串的結束。需要注意的是:只有以null字符結尾的字符數組才是C字符串,否則只是一般的C字符數組。
C字符串定義時可以利用等號(“=”)進行初始化,但是以后不能再利用等號(“=”)對C字符串進行賦值。對C字符串的操作需要通過“string.h”頭文件中字義的字符串處理函數。例如:
//字符串的初始化
char str[11] = "helloworld";
//字符串的賦值
strcpy(str, "hello c");
//獲取字符串的長度(不包括'\0'在內)
strlen(str);
//顯示字符串
printf("%s", str);
在C中也可以使用字符指針來訪問一個字符串,通過字符指針指向存放字符數組的首元素地址來進行訪問。
char* str = "helloworld";
print("%s", str);
在C++中則把字符串封裝成了一種數據類型string,可以直接聲明變量并進行賦值等字符串操作。以下是C字符串和C++中string的區別:
|
C字符串 |
string對象 |
所需的頭文件名稱 |
string/string.h |
string/string.h |
為什么需要頭文件 |
為了使用字符串函數 |
為了使用string類 |
如何聲明 |
char name[20]; |
string name; |
如何初始化 |
char name[20] = "zhangsan"; |
string name = "zhangsan"; |
必須聲明字符串長度嗎? |
是 |
否 |
需要使用一個null字符作結尾符號嗎? |
是 |
否 |
怎樣實現字符串賦值? |
strcpy(name, "lisi"); |
name = "lisi"; |
其他優點 |
更快 |
更易于使用,優選方案 |
可以賦一個比現有字符串更長的字符串嗎? |
不能 |
可以 |