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

时间:2012-01-05 20:05:43

标签: c++ c header

  

可能重复:
  Difference between string.h and cstring?

在包含与

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

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

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

以及其他<c*><*.h>标题文件显然似乎完成了同样的事情?

1 个答案:

答案 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}}前缀。