包括标准头文件.string.h还是cstring?或两者?

smi*_*dha 14 c c++ header

可能重复:
string.h和cstring之间的区别?

在包含标准头文件时,C++中更好的编程习惯是什么

包括cmath代替math.h或反之亦然?

包括cstring代替string.h或反之亦然?

而对于其他<c*><*.h>头文件显然似乎完成相同的事情?

Fre*_*Foo 23

<cstring>更新; <string.h>实际上是为了向后兼容(当然,对于C).区别在于<cstring>将字符串函数放在std命名空间中,同时<string.h>将它们放在全局命名空间中.

此外,<cstring>更改某些功能的类型以促进类型安全.例如,C声明

char *strchr(char const *, int);
Run Code Online (Sandbox Code Playgroud)

被重载替换(在std命名空间中)

char       *strchr(char       *, int);
char const *strchr(char const *, int);
Run Code Online (Sandbox Code Playgroud)

在的情况下,<cmath>进一步的差异<math.h>这使得<cmath>更地道和更少的C状.

喜欢<cstring>新代码并std::在函数上使用前缀.