c ++-<string>和<string.h>之间的区别?

这个代码怎么来

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

编译(我正在使用MSVC 2010)

#include <string>

但不是

#include <string.h>

?

Valmond asked 2020-02-21T14:03:35Z
9个解决方案
68 votes
  • <string.h>包含用于C样式以null终止的字符串的旧函数,例如<string>std::string
  • <string>主要包含std::stringstd::wstring和其他类别。
Ajay answered 2020-02-21T14:03:55Z
17 votes

string.h是C头,不是C ++头,句号!

Prasoon Saurav answered 2020-02-21T14:04:15Z
16 votes

<cstring>是cstring-[http://www.cplusplus.com/reference/clibrary/cstring/]

<cstring>是c ++字符串类-[http://www.cplusplus.com/reference/string/]

根据Nicol Bolas的以下评论进行编辑,并进行一些谷歌搜索:

<cstring>通常将与<string.h>导入相同的内容,但导入到std命名空间中。<string.h>通常会将所有内容导入全局名称空间。根据我的谷歌搜索,它似乎取决于您使用的库实现。

就个人而言,如果我需要C样式字符串助手,我只会使用<cstring>

matiu answered 2020-02-21T14:04:56Z
11 votes

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

Abhijeet Rastogi answered 2020-02-21T14:05:16Z
9 votes

<string>包含C库字符串函数。 std::basic_stringstd::string

<string>包含std::basic_string的定义,其定义为typedef std::stringstd::wstring

除了它们都处理字符串之外,它们实际上根本没有任何关系。

Nicol Bolas answered 2020-02-21T14:05:46Z
5 votes

它们是完全不同的标题。

<string.h> or <cstring>是C ++ string

<string.h> or <cstring>定义用于操作C字符串和数组的函数

Sanish answered 2020-02-21T14:06:15Z
2 votes

如前所述,string.hcstring是C头(而cstring基本上是string.h的C ++包装器),包含C字符串的函数,这些函数是char[],以'\0'终止。您要使用c ++类字符串,头为275744100457。

Zeta answered 2020-02-21T14:06:37Z
2 votes

我相信<string.h>仅用于C,而<string>仅用于C ++。 所以包括string.h将无法工作。

jpstrube answered 2020-02-21T14:06:58Z
0 votes

<string.h>是C标准库标头,而<string>是cpp,实际上所有c标准标头文件都有.h扩展名,而非cpp有.h

PankajSingh answered 2020-02-21T14:07:18Z
translate from https://stackoverflow.com:/questions/9257665/difference-between-string-and-string-h