<cstring>和<string>之间的区别
今天早些时候(实际上昨天是由于我的时区),我正在Interview Street(使用g ++ )尝试使用Visual Studio 2012 for C ++进行编程访谈。
简而言之,我在使用时遇到了几个编译错误1
#include <cstring>
这是由骨架代码提供的一个问题,然后转向
#include <string>
所有的编译错误都神奇地消失了。
但是,在提交到采访街之后,我不得不补充c
; 否则我得到编译错误。
这是我第一次被非标准化咬伤….
我的问题是: <string>
和<cstring>
把我(宝贵的)超过半小时?
1对于任何好奇的人:
如果using <cstring>
,Visual Studio 2012会出现一个错误:
错误C2338:C ++标准不提供这种types的散列。
在
c:\ program files(x86)\ microsoft visual studio 11.0 \ vc \ include \ xstddef
可能是string
作为unordered_map
键
如果using <string>
由g ++引起的一个错误是:
“strlen”没有在这个范围内声明
cstring
头部提供了处理C风格string的函数 – 以空字符结尾的字符数组。 这包括像strlen
和strcpy
这样的函数。 这是C语言经典的string.h
头文件的C ++版本
string
头文件提供了std::string
类以及相关的函数和操作符。
标题的名称相似,但除此之外,它们并没有真正相关。 他们涵盖单独的任务。
<cstring>
具有C头文件string.h中的Cstring代码。 C++
有一个约定,其中C
标头具有相同的基本名称,除了前导c
和后缀.h
。 所有的内容都可以在std::
namespace下find。
<string>
具有标准库的std::string
和相关函数
在C ++中,您不会使用#include <somefile.h>
,而是使用#include <somefile>
。 现在C ++在<string>
有它的string类,但是Cstring函数也是可用的,它们将在<string.h>
。 C ++使用“传统”c-包含文件。 因此, <cstring>
和<string>