天天看點

C、C++字元串詳解C中的字元串C++中的字元串類比較

C中的字元串

存儲方式

C中的字元串一般是采用字元數組來存儲的。它由實際部分和末尾的辨別符組成

s

的長度為

len

,則

s[0]

~

s[len-1]

一共

len

的長度存的是

s

的實際部分。但是,實際上

s

的占位是

s[0]

~

s[len]

。這

s[len]

存的是什麼呢?是一個空字元

'\0'

。它标記着字元串的結尾。通過這個标記,一些字元串操作的函數才能夠友善的實作

輸出方式

一般采用

printf("%s", s)

輸出一個名為

s

的字元串。當然,也可以采用C++中的輸出方式

cout << s

來輸出一個字元串,但是比

printf()

慢。同樣,也可以通過順序周遊這一字元數組,通過

putchar()

進行輸出,稍微比第一種方式快,可以看作一個小優化。

字元串函數

在C++中,為了友善對C類字元串進行操作,C++标準在

cstring

頭檔案中定義了許多字元串(操作)函數。詳情可看這裡 (連結引用自芮小譚的部落格)

C++中的字元串類

C++的STL标準中,在頭檔案

string

中定義了字元串類

string

,它重載了許多的運算符,比C類字元串的操作更友善。詳細資料請看這裡(連結引用自勤奮的小小螞蟻的部落格)

輸入方式:

cin >> s;

讀入到空格或換行符為止

getline(cin, s)

讀入一行字元串

比較

在OI中,我們大部分人都比較喜歡使用C++的

string

字元串類,因為它看起來好用的多,字元串操作速度也不慢。但是,有一弊端是它必須使用C++的

istream

系列輸入流進行讀入,效率較低。故若我們要讀入大量字元串時,最好還是寫C的字元串。(

string

輸出可以使用

.c_str()

轉換為C字元串後,再用

printf()

輸出)

繼續閱讀