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

问题描述 投票:0回答:2

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

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

让事情变得更复杂的是,有<string><strings.h>。有什么不同?

c++ namespaces include
2个回答
2
投票

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

所以你可以写

#include <string>

std::string my_string;

要么

#include <string>
using namespace std;

string my_string;

正如其他人所提到的 - 第一个版本比第二个版本更推荐,因为通常有一个原因是事物在他们自己的命名空间中(例如这里的std命名空间)。如果您有毯子using声明,您可能会遇到意外的名称冲突或其他问题。如果您在头文件中执行此操作尤其如此,除非您确切知道结果的位置和位置,否则您永远不应该这样做。


5
投票

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

<string.h>是C(C ++等价物是<cstring>)并且只提供在char*上工作的函数。

不要使用using namespace std;(参见C++ Core Guidelines)。

© www.soinside.com 2019 - 2024. All rights reserved.