1. 程式人生 > 其它 >C++中cstring、string、string.h的區別

C++中cstring、string、string.h的區別

在學習演算法題的過程中,最常見的就是字串輸入,一般都會涉及到幾個不同的標頭檔案,這裡總結一下這幾個同文件的異同之處。

<string.h>

<string.h>是C語言中和字串相關的標頭檔案。C語言的內建資料型別中不包括字串,只有字元陣列char[],<string.h>中將字元陣列的一些常用操作封裝在其中,包含比如strlen、strcmp、strcpy、strcat之類的字串處理函式。要注意它對應的是字元陣列,本身並不是字串資料型別。

<cstring>

在C++標準化過程中,C++為了向前相容C語言,標準化組織將所有C語言的標頭檔案都進行了新的定義,加入到了標準庫中,加入後的檔名就新增了一個"c"字首並且去掉了.h的字尾名,所以<string.h>標頭檔案成了標頭檔案,其實現是相同的或是相容以前的。要注意,此時的依然不是對應著string資料型別,仍然是字元陣列char[]

<string>

是C++標準定義的標頭檔案,它定義了一個string的字串類,裡面包含了string類的各種操作,如s.size(), s.erase(), s.insert()等。
又包含了老的C版本的字串操作如strcmp、strcpy、strcat等,這就相當於,在的檔案中除了定義自己的string類之外,還加了一個#include<string.h>一句包含了C版本的字串操作。但是中並沒有完全包含<string.h>中所有的方法,並不能認為=<string.h> + string型別。
是新標準,定義了namespace std; 而雖然也是新標,但是定義中包含的是string.h。所以中可以進行+ = += >等運算,而中不能進行相關運算。