<string.h>或<string>?</string> </string.h>

时间:2011-11-29 15:07:49

标签: c++ string string.h

在C ++项目中包含标准头string.h的最佳方法是什么? 最后使用[dot] h,如下所示:

#include <string.h>

或者只是写作

#include <string>

或者,也许,使用另一种我不知道的方式?

谢谢!

6 个答案:

答案 0 :(得分:59)

这是两个不同的标题。

  • <string>适用于c ++ std::string
  • <string.h>用于c字符串函数(如strlen()等),对于c ++项目应该是<cstring>(这是第三个,你不知道)。

答案 1 :(得分:8)

它完全不同!

<string.h>这个用于C风格字符串的库

<string>用于C ++字符串

按照C ++标准,您应该使用<cstring>代替<string.h>

答案 2 :(得分:2)

Wiki说:

  

C ++标准库还包含了ISO C90 C的18个标头   标准库以“.h”结尾,但不推荐使用它们。所有   C ++标准库中的其他标题 不要 以“.h”结尾。

     

C标准库中的每个标头都包含在C ++中   标识库名称不同,通过删除.h生成,   并在开头添加'c';例如,'time.h'变为'ctime'。

答案 3 :(得分:1)

string是c ++ stl headfile 提供模板类'string' string.h是c标准头文件 提供许多功能使用。像strlen strcpy memcpy。 如果你想在命名空间std中使用,那就不使用globe命名空间或者不想使用string.h 你可以改用cstring。

答案 4 :(得分:0)

*.h头文件通常是C头文件,您可以在C ++中使用,可能包含extern "C" { ... }

没有任何*.h的标头通常是真正的C ++标头。

这只是一个经验法则。

最新和以前的C ++标准(c ++ 11,C ++ 03)定​​义了像<cstdio>这样的标头,以正确地包装原始C标头,使用名称空间等。

答案 5 :(得分:-3)

标准是

#include <string>