可能重复:
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::
在函数上使用前缀.