[英]Difference between <string> and <string.h>?
這個代碼怎么來的
std::map <std::string , int> m;
m["a"]=1;
編譯(我使用的是 MSVC 2010)
#include <string>
但不是與
#include <string.h>
?
<string.h>
包含舊函數,如strcpy
、 strlen
用於 C 風格的空終止字符串。<string>
主要包含std::string
、 std::wstring
等類。string.h
是 C 頭文件而不是 C++ 頭文件,句號!
<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 庫字符串函數。 strlen
, strcmp
等。
<string>
包含std::basic_string
的定義,它具有類型定義std::string
和std::wstring
。 這就是區別。
除了它們都處理字符串這一事實之外,它們真的沒有任何關系。
它們是完全不同的標題。
<string>
是 C++ string
類
<string.h> or <cstring>
定義了操作 C 字符串和數組的函數
如上所述, string.h
和cstring
是 C 頭文件(而cstring
基本上是string.h
的 C++ 包裝器),包含 C 字符串的函數,這些函數是char[]
以'\\0'
終止。 您想使用 C++ 類字符串,其標頭是<string>
。
我相信<string.h>
僅用於 C 和<string>
用於 C++。 所以包括string.h
不起作用。
<string.h>
是 C 標准庫頭文件,而<string>
是 cpp 實際上所有 c 標准頭文件都有.h
擴展名,非 cpp 有.h
。
string.h 適用於與 C 兼容的 C++ 字符串類 string 適用於純 C++ 字符串類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.