與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...