C++ 字符串

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";
相關文章
相關標籤/搜索