1. C-風格字符串c++
說到字符串,那就不得先說說C-風格的字符串,它的頭文件名是cstring。在C中存儲字符串是經過char數組來實現的。下面看一段代碼:數組
#include <cstring> char c1[5] = {'Z','Z','e','r','o'}; //這不是字符串 char c2[5] = {'Z','e','r','o','\0'}; //是字符串
用cout打印一下c1,發現出現未知錯誤,打印出來的結果異常,而打印c2就是一個字符串。空字符對C-風格字符串來講相當重要,空字符是C-風格字符串的結尾,當cout碰到空字符就會中止。而在打印c1過程當中,cout並無在數組中發現空字符,它會一直讀下去,直到在其餘內存空間碰到空字符,才結束,因此在打印完c1數組內容後面會出現一些莫名的字符。spa
好了,又有問題來了,請看下面代碼:code
int a[2] = {1,2}; cout<< a <<endl; //打印了a的地址 char b[2] = {'Z'}; cout<< b <<endl; //打印了Z
爲何會出現這種狀況呢, 這裏牽扯到C++重載機制,對於char數組,cout輸出數組內容,而對於其餘類型數組,好比int數組,則輸出首元素的地址。固然你要獲取char數組地址,使用&b就能夠實現。強調char數組名是指向首字符的地址的,這一點是不會變的,只不過cout處理char數組時,是輸出地址裏面的內容的。對象
使用C-風格字符串,每次初始化時要用這麼多單引號,太麻煩了,因此有另外一種方式初始化。請看下面代碼:內存
char ch1[6] = "ZZero"; char ch2[] = "Everything starts from zero !"; //我的喜歡使用這種,不用去管大小,可是不提倡這種。
2. C++字符串字符串
c++字符串它的頭文件是string,string類位於名稱空間std中,所以要使用string對象就要用到using編譯指令,或者使用std::string來引用它。string
#include <string> using namespace std; //string 初始化 string str1 = {"Zzero"}; string str2 {"ZZero"}; string str3 = "ZZero";