std :: string vs c ++中的字符串

可能重复:
为什么'使用名称空间标准;' 在C ++中被认为是不好的做法?
使用std命名空间

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

我通常用一个程序来定义

#include<string>
using namespace std;

string x;

我看到一堆代码样本,它们将字符串定义为

std::string.

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


正如其他答案已经表明的那样,除非您导入整个std命名空间或std::string (见下文),否则使用std::是必需的。

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

如果你喜欢只写string ,我建议你using std::string; 而不是using namespace std; 只将这些东西导入到实际需要的全局名称空间中。


string的全名是std::string因为它驻留在namespace std中,所有C ++标准库函数,类和对象都驻留在该命名空间中。

在你的代码中,你明确地using namespace std;添加了这行using namespace std; ,它使您可以使用标准名称空间中的任何内容,而不使用std::前缀。 因此,您可以使用简写string来引用std::string (字符串类型的真实名称),因为编译器知道要在它的namespace std查找。

stringstd::string没有功能上的区别,因为它们是相同的类型。 也就是说,有些时候你更喜欢std::string over string 。 例如,在头文件中, using namespace std;来放置该行通常不是一个好主意using namespace std; (或者使用任何命名空间),因为它可能会导致包含该标题的文件中的名称变得模糊不清。 在这个设置中,您只需在头文件中包含#include <string> ,然后使用std::string来引用字符串类型。 同样,如果std::string和其他string类型之间有任何歧义,则使用名称std::string将消除不明确性。

是否包含using namespace std;的行using namespace std; 毕竟是一个有点争议的话题,许多程序员都强烈地或强烈地反对它。 我建议使用任何你感到满意的东西,并确保在大型项目中使用任何编码约定。


正如ssteinberg所说的那样。 但仅在语法上。

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

std::string 

无论你需要它,还是添加一个明确的

using std::string;

在源文件的开头。

优点是以这种方式,源文件的依赖关系更易于观察。 如果你添加一个

using namespace std;

这意味着您的代码可能取决于该名称空间内的任何内容。

链接地址: http://www.djcxy.com/p/29777.html

上一篇: std::string vs string in c++

下一篇: What is the use of "using namespace std"?