参考自 http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html
标准的c++头文件没有.h扩展名,c++为了兼容c的标准库,c的头文件转换成c++头文件时,通常加上前缀c表示源于c,如<cmath>来源于<math.h>。
一般,在将c头文件转换成c++头文件后,定义的内容都放入了名字空间std中,所以在使用转换后的c++头文件时,需要加上using namespace std。
c的标准库里的头文件<string.h>,与c++里string类毫无关系。
<string.h>是c头文件,其中定义了基于char*的字符串处理函数。
<cstring>是对应于<string.h>的c++头文件,其在名字空间std中包含了<string.h>。
<string>是c++头文件,对应于string类。