與string相關的標頭檔案解析(C C )

2021-06-19 16:44:12 字數 1611 閱讀 7074

與string相關的標頭檔案解析(c/c++)

1.下面是大家比較熟悉的標頭檔案

#include c++標準庫提供的string類

#include c標準庫提供的字串函式

#include c++對標準c字串處理函式的c++增強

string中定義的是乙個string類,不用說什麼了,但是string.h 和 cstring有什麼呢?

/*

* this is the c++ version of the standard c library header @c string.h,

* and its contents are (mostly) the same as that header, but are all

* contained in the namespace @c std (except for names which are defined

* as macros in c).

*/

就是說,這兩個檔案內容(幾乎)相同(除了其中一些巨集的名字)。

為什麼說幾乎相同呢?是因為還是有一點不同,在c++11中,這個函式宣告:

void *memchr(const void*, int, size_t) /* in c */
被以下的兩個宣告替換:
void *memchr (void *, int, size_t) /* in c++ */

const void *memchr (const void *, int, size_t) /* in c++ */

實際上面3個函式的實現是一樣的。

2.在有些系統(unix/linux etc.)中還有這樣的乙個標頭檔案strings.h

int    bcmp(const void *, const void *, size_t); /* legacy, see memcmp */

void bcopy(const void *, void *, size_t); /* legacy, see memcpy, memmove */

void bzero(void *, size_t); /* legacy, see memset */

int ffs(int);

char *index(const char *, int); /* legacy, see strchr */

char *rindex(const char *, int); /* legacy, see strrchr */

int strcasecmp(const char *, const char *);

int strncasecmp(const char *, const char *, size_t);

該標頭檔案不是經常用到(在windows環境都沒有這個檔案)。

3.說到頭檔案,還有乙個問題要說

<>引用的標頭檔案和""引用的標頭檔案的區別:其實就是搜尋路徑的區別。

<>引用的標頭檔案的搜尋路徑是系統庫路徑;

""引用的標頭檔案的搜尋路徑首先是當前路徑,如果當前路徑沒有該檔案,則去系統路徑下搜尋。

引用:string.h和strings.h的區別

string與string標頭檔案

先來段 我是在vs2012上實驗的 include stdafx.h include include include using namespace std int tmain int argc,tchar argv cout endl for rit mapstudent.rbegin rit m...

string標頭檔案與cstring標頭檔案

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

類實現string與string標頭檔案

首先宣告,我是乙個菜鳥。一下文章中湧現技術誤導情況蓋不負責 先來段 我是在vs2012上驗實的 include stdafx.h include include include using namespace std int tmain int argc,tchar argv cout endl f...