如何在cpp中导入/包含字符串

时间:2019-04-10 09:43:07

标签: c++ namespaces include

我想使用字符串类。 我还应该参与using namespace std;吗?

我认为#include <string>就足够了,但是在CLion中,当这两个(命名空间或包含)中只有一个不存在时,就会出现一些错误。

使事情变得更复杂的是,存在<string><strings.h>。有什么区别?

2 个答案:

答案 0 :(得分:5)

<string>是C ++,提供std::string类。

<string.h>是C(C ++等效于<cstring>),并且仅提供在char*上运行的函数。

请勿使用using namespace std;(请参阅C++ Core Guidelines)。

答案 1 :(得分:2)

在C ++中,using语句与包含该名称空间(或类型)的功能无关。相反,它允许您在using语句之后在当前作用域的其余部分(或编译单元,如果您在全局作用域中使用该语句)中不带名称空间前缀的情况下使用语句中的名称空间。

所以你可以写

#include <string>

std::string my_string;

#include <string>
using namespace std;

string my_string;

就像其他人提到的那样-比第二个版本更推荐使用第一个版本,因为通常是因为事物位于其自己的名称空间(例如此处的std名称空间)中。如果您有一个笼统的using声明,则可能会遇到意想不到的名称冲突或其他问题。如果在头文件中执行此操作尤其如此,除非您确切知道结果将是什么以及在哪里,否则永远不要这样做。