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