区别
<string.h> 是旧的C/C++头文件,对应的是基于char*的字符串处理函数;
<string> 是包装了std的C++头文件,对应的是新的string类;
<cstring> 是对应旧的C头文件的std版本。
总结
C和C++的标准类库被修订了三次,有三个标准:C89、C99和C11,这三个库现在都在并行使用。用 .h 包含的是C89 ,不带 .h 的是C99和C11的头文件,对于普通用户来说这没有什么区别,区别是在内部函数的具体实现上。
<XXX.h> 是C89标准下定义的旧的C/C++头文件,定义的函数暴露在全局中
<XXX> 是C99标准下定义的新的C++头文件,是C++特有的库,包装了std命名空间
<cXXX> 是为了在C++中使用C语言C89旧标准的已有库函数而设计的,包装了std命名空间