C 筆記(CString和string區別)

2021-08-21 12:40:22 字數 2194 閱讀 4272

1.string與cstring有什麼區別

是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中不能進行相關運算。

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

using   namespace   std;

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

using   namesapce   std;

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

2.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類方便那麼一點點。

3.(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 採用allocator模板仿造string

寫在前言 這是一道c primer第五版第十三章的習題,13.44,都是按自己的感覺寫的,如有邏輯錯誤,請您不吝賜教!進入正題 這個string支援標準庫string的基礎操作,比如 操作 輸出操作 size 函式 capacity 函式 begin 函式 end 函式。從頭分析,建構函式接受無參,...

學習筆記 C string

c 字串類在內部使用char陣列儲存字元,但是所有的記憶體管理,分配和null終止都由字串類本身來處理,這就是為什麼它易於使用。由於類似於向量的動態記憶體分配,因此可以在執行時更改c 字串的長度。由於字串類是容器類,因此我們可以使用類似於向量,集合和對映之類的其他容器的迭代器來迭代其所有字元 inc...

Python函式之filter 和strip

python函式之filter 和strip 編寫乙個remove false 函式 將引數中的 假 去掉 remove false 0,1,2,false,fishc 34 1,2,fishc 34 lst 0,1,2,false,fishc 34 def remove false lst ret...