簡體   English   中英

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

[英]Difference between <string> and <string.h>?

這個代碼怎么來的

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

編譯(我使用的是 MSVC 2010)

#include <string>

但不是與

#include <string.h>

?

  • <string.h>包含舊函數,如strcpystrlen用於 C 風格的空終止字符串。
  • <string>主要包含std::stringstd::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 庫字符串函數。 strlenstrcmp等。

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

除了它們都處理字符串這一事實之外,它們真的沒有任何關系。

它們是完全不同的標題。

<string>是 C++ string

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

如上所述, string.hcstring是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM