頭文件 string.h cstring string 區別

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

#include //可以定義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支持了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章