頭文件 string.h cstring string 區別


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

#include <string>   //可以定義string s;可以用到strcpy等函數
using   namesapce   std;

 

#include <string.h>   //不可以定義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  
  {  
  #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支持了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM