C++ std::字符串与c+中的字符串+;

C++ std::字符串与c+中的字符串+;,c++,string,std,C++,String,Std,可能的重复项: 我一直在一堆不同的论坛上徘徊,我似乎每次都能看到这个弹出窗口。这是一个非常初级的问题 我通常用 #include<string> using namespace std; string x; 这样做的目的是什么?这是一种好的做法还是有一些功能?如果您使用了名称空间std在您的代码之前,它是相同的。与前面已经说明的另一个答案一样,除非您导入整个std命名空间或std::string(见下文),否则必须使用std: 在我看来,最好使用std::string而不是s

可能的重复项:

我一直在一堆不同的论坛上徘徊,我似乎每次都能看到这个弹出窗口。这是一个非常初级的问题

我通常用

#include<string>
using namespace std;

string x;

这样做的目的是什么?这是一种好的做法还是有一些功能?

如果您使用了
名称空间std在您的代码之前,它是相同的。

与前面已经说明的另一个答案一样,除非您导入整个
std
命名空间或
std::string
(见下文),否则必须使用
std:

在我看来,最好使用
std::string
而不是
string
,因为它明确表明它是
std::string
而不是其他字符串实现


如果您喜欢只编写
string
,我建议您使用
使用std::string
而不是
使用名称空间std
仅将实际需要的内容导入全局命名空间。

如果它们不是
,请使用
命名空间std
,然后,必须使用<代码> STD::String

< > > > <代码>字符串> <代码>:< Stry,因为它位于命名空间STD >中,所有C++标准库函数、类和对象所在的命名空间。 在代码中,您已经使用名称空间std显式地添加了行
,它允许您使用标准名称空间中的任何内容,而无需使用
std::
前缀。因此,您可以使用缩写
string
引用
std::string
(字符串类型的真实名称),因为编译器知道在
命名空间std
中查找它

string
std::string
之间没有功能上的区别,因为它们是相同的类型。也就是说,有时您更喜欢
std::string
而不是
string
。例如,在头文件中,通常不认为使用名称空间std放置行
(或者使用任何名称空间),因为它会导致包含该头的文件中的名称变得不明确。在此设置中,您只需在标题中包含
,然后使用
std::string
引用字符串类型。类似地,如果
std::string
和其他
string
类型之间存在任何歧义,使用名称
std::string
将消除歧义

是否使用名称空间std包含行
是一个有点争议的话题,许多程序员强烈支持或强烈反对它。我建议你使用任何你觉得合适的方式,并确保在处理大型项目时采用任何编码约定。

正如前面所说的一样。但只是在句法上

根据我的经验,使用全名更有用

std::string 
无论您需要它,或添加一个显式

using std::string;
在源文件的开头

这样做的好处是,源文件的依赖关系更容易观察到。如果你加一个

using namespace std;

这意味着您的代码可能依赖于该命名空间中的任何内容。

的可能重复。另请看。我做了一次搜索,但没有找到那些问题。大家好。
string
的全名是
::std::string
,但没有人使用它。这里没有说的,实际上是回报,是在声明
使用std::string之后
,您可以直接编写,例如
string s=“foo”
using namespace std;