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()
輸出)