c++ string




<string>和<string.h>之間的區別? (6)

怎麼來這個代碼

std::map <std::string , int> m;
m["a"]=1;

編譯(我正在使用MSVC 2010)

#include <string>

但沒有

#include <string.h>


<string.h>包含C庫字符串函數。 strlenstrcmp

<string>包含std::basic_string的定義,它包含typedefs std::stringstd::wstring 。 這就是區別。

他們真的沒有任何關係,除了他們都處理字符串。


<string.h>是cstring - http://www.cplusplus.com/reference/clibrary/cstring/

<string>是c ++字符串類 - http://www.cplusplus.com/reference/string/

根據Nicol Bolas的評論在下面發表評論並進行一些谷歌搜索:

<cstring>通常會將與<string.h>相同的內容導入到std命名空間中。 <string.h>通常會將所有內容導入全局命名空間。 根據我的谷歌搜索,它似乎依賴於你正在使用的庫實現。

就個人而言,如果我需要C風格的字符串助手,我只會使用<cstring>


string.h是C的頭文件,而string是C ++的頭文件。


string.h是一個C頭而不是C ++頭,期間!


它們是完全不同的標題。

<string>是C ++ string

<string.h> or <cstring>定義了操作C字符串和數組的函數


我相信<string.h>僅用於C和<string>用於C ++。 所以包括string.h不會工作。





header-files