<string.h>或<string>?

Ove*_*owh 23 c++ string string.h

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

#include <string.h>
Run Code Online (Sandbox Code Playgroud)

或者只是写作

#include <string>
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Mic*_*ker 60

这是两个不同的标题.

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

  • -1使用`<cstring>`而不是`<string.h>`不是一个好主意.它除了增加代码的脆弱性之外什么都不买,因为`<cstring>`不保证不会污染全局命名空间.拥有一个没有污染的全局命名空间是`<cstring>`的最初动机,但AFAIK没有编译器实现它,并且C++ 11保证不见了 (2认同)

tri*_*san 8

它完全不同!

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

<string> 对于C++字符串

在C标准++,你应该使用<cstring>,而不是<string.h>