C 標頭檔案中cstring和string的區別

2021-10-24 17:34:21 字數 2114 閱讀 4216

是c++標準庫標頭檔案,包含了擬容器class std::string的宣告(不過class string事實上只是basic_string的typedef),用於字串操作。

是c標準庫標頭檔案的c++標準庫版本,包含了c風格字串(nul即』\0』結尾字串)相關的一些型別和函式的宣告,例如strcmp、strchr、strstr等。和的最大區別在於,其中宣告的名稱都是位於std命名空間中的,而不是後者的全域性命名空間。

看定義就知道了,string是新標準,定義了namespace std;而cstring雖然也是新標,但是定義中包含的是string.h。

string中可以進行+ = += >等運算,而cstring中不能進行相關運算。

#include //不可以定義string s;可以用到strcpy等函式

using namespace std;

#include //可以定義string s;可以用到strcpy等函式

using namesapce std;

#include //不可以定義string s;可以用到strcpy等函式

1)檔案cstring,和string.h對應,c++版本的標頭檔案,包含比如strcpy之類的字串處理函式

2)檔案string.h,和cstring對應,c版本的標頭檔案,包含比如strcpy之類的字串處理函式

3)檔案string,包含std::string的定義,屬於stl範疇

4)cstring,mfc裡的的字串類

string.h是c語言中字串操作函式的標頭檔案

cstring是c++對c語言中的strcpy之類的函式申明,包含cstring之後,就可以在程式中使用c語言風格的strcpy之類的函式。

string是c++語言中string類模板的申明

cstring是mfc中定義的字串類,mfc中很多類及函式都是以cstring為引數的,另外cstring類過載了(lpcstr)運算子,所以如果你在mfc下面使用cstring類,就可以直接用cstring類做為引數來呼叫需要乙個c語言風格字串的win api函式,編譯器會自動呼叫(lpcstr)成員函式完成從cstring到乙個c風格字串的轉換。如果你在mfc下使用c++語言中標準的 string類,那麼在呼叫需要c語言風格的字串為引數的win api時,你必須顯示呼叫sting.c_str()成員函式,來完成同樣的轉換,也就是說在使用mfc裡,如果用cstring類,會比sting類方便那麼一點點。

(1).首先說cstring與string.h:

cstring和string.h其實裡面都是c標準庫提供的東西,某些實現中cstring的內容

就是:namespace std

cstring是c++的組成部分,它可以說是把c的string.h的公升級版,但它不是c的組成部分。

所以如果你用的是c++,那麼請用cstring,如果你用的是c請用string.h。

(2).string與cstring:

一般乙個c++庫老的版本帶「.h」副檔名的庫檔案,比如iostream.h,在新標準後的標準庫中都有乙個不帶「.h」副檔名的相對應,區別除了後者的好多改進之外,還有一點就是後者的東東都塞進了「std」名字空間中。

string,它是c++定義的std::string所使用的檔案,是string類的標頭檔案,屬於stl範疇。它有很多對字串操作的方法。

4.string.h是c++標準化(2023年)以前的c++庫檔案,在標準化過程中,為了相容以前,標準化組織將所有這些檔案都進行了新的定義,加入到了標準庫中,加入後的檔名就新增了乙個"c"字首並且去掉了.h的字尾名,所以string.h標頭檔案成了cstring標頭檔案。但是其實現卻是相同的或是相容以前的。相當於標準庫組織給它蓋了個章,說「你也是我的標準程式庫的乙份子了」

5.cstring代表的是string.h,但是被封裝到了std裡面,譬如呼叫strlen函式,需要寫成std::strlen(yourstr)才行,這個使用方法比較符合c++的標準要求string就是c++標準庫裡面的string模板(確切地說應該是乙個特化的模板),但是他同樣包含了c風格字串操作函式的定義(應該是通過包含string.h實現的)string.h就不需要使用名字空間了,這個是c風格字串操作的乙個函式庫,strlen,strcpy,strcat,strcmp……都在這裡面了,不過既然是c風格的庫,當然不需要namespace支援了。

C string標頭檔案

以下函式的定義取自 中string標頭檔案的定義函式 to string val 返回val對應的string 成員函式 在當前值的末尾附加其他字元來拓展。assign 為字串分配乙個新值,替換其當前內容。at 返回對字串中位置pos的字元的引用。該函式自動檢查pos是否是字串中字元的有效位置 即p...

string標頭檔案與cstring標頭檔案

首先說string的標頭檔案 1 包裝了std的c 標頭檔案 2 舊的c標頭檔案 3 舊c標頭檔案的std版本,切記,這不是cstring的標頭檔案 詳見effective c 的第49條 再說cstring的標頭檔案 注 vc9編譯環境下 1 非mfc版本,控制台程式就用這個 2 mfc版本,需要...

cstring與string標頭檔案與輸出

在使用了mfc庫的工程中cstring可以直接使用,在沒有使用mfc庫的工程中 先 右擊專案 屬性 配置屬性 常規,然後在右邊的 專案預設值 中的 mfc的使用 選項中選擇 在共享 dll 中使用 mfc 注意開啟屬性後,配置項的選擇要和當前使用的配置統一。然後再新增標頭檔案 include 可能v...