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
查找。
string
和std::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