頭文件 string.h cstring string 區別

1.
#include <cstring>   //不能夠定義string s;能夠用到strcpy等函數
using   namespace   std;

#include <string>   //能夠定義string s;能夠用到strcpy等函數
using   namesapce   std;ios

 

#include <string.h>   //不能夠定義string s;能夠用到strcpy等函數c++

 

2.api

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

 

3.字符串

(1).首先說cstring與string.h:
cstring和string.h其實裏面都是C標準庫提供的東西,某些實現中cstring的內容
就是:  
  namespace   std  
  {  
  #include   <string.h>  
  }  
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++標準化(1998年)之前的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支持了。編譯器

相關文章
相關標籤/搜索