在包含与
相关的标准头文件时,C ++中更好的编程习惯是什么包括cmath
代替math.h
或反之亦然?
包括cstring
代替string.h
,反之亦然?
以及其他<c*>
和<*.h>
标题文件显然似乎完成了同样的事情?
答案 0 :(得分:23)
<cstring>
更新; <string.h>
实际上是为了向后兼容(当然还有C)。不同之处在于<cstring>
将字符串函数放在std
命名空间中,而<string.h>
将它们放在全局命名空间中。
此外,<cstring>
更改某些功能的类型以提升类型安全性。例如,C声明
char *strchr(char const *, int);
被重载(在std
命名空间中)
char *strchr(char *, int);
char const *strchr(char const *, int);
如果<cmath>
further differences <math.h>
<cmath>
,则<cstring>
更具惯用性,更少C类。
首选std::
新代码,并在函数上使用{{1}}前缀。