Val*_*ond 47 c++ string header header-files
怎么来这个代码
std::map <std::string , int> m;
m["a"]=1;
Run Code Online (Sandbox Code Playgroud)
编译(我正在使用MSVC 2010)
#include <string>
Run Code Online (Sandbox Code Playgroud)
但没有
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
?
Aja*_*jay 68
<string.h>包含旧函数,例如strcpy,strlen用于C样式的以null结尾的字符串.<string> 主要包含了std::string,std::wstring和其他类.mat*_*tiu 16
<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>通常会将所有内容导入全局命名空间.根据我的谷歌搜索,它似乎依赖于你正在使用的库实现.
就个人而言,<cstring>如果我需要C风格的字符串助手,我只会使用它.
<string.h>包含C库字符串函数.strlen,strcmp等等.
<string>包含其定义std::basic_string,其中包含typedef std::string和std::wstring.这就是区别.
他们真的没有任何关系,除了他们都处理字符串.