How come this code
std::map m;
m[\"a\"]=1;
compiles with (I\'m using MSVC 2010)
#include
string.h
is a C header not a C++ header, period!
<string.h>
is a C standard library header while <string>
is a cpp in fact all the c standard header files have .h
extension an non of cpp have .h
.
string.h is for c compatible c++ string class string is for pure c++ string class
As stated, string.h
and cstring
are C headers (while cstring
is basically a C++ wrapper for string.h
), containing functions for C strings, which are char[]
terminated by '\0'
. You want to use the c++ class string, which header is <string>
.
string.h
is C's header file while string
is C++'s header file.
They are entirely different headers.
<string>
is C++ string
class
<string.h> or <cstring>
defines functions to manipulate C strings and arrays