"std::string"和"c++的string"的区别
"std::string"和"c++的string"的区别
这个问题已经有答案了:
可能的重复问题:
我一直在不同的论坛上转悠,每次都会看到这个问题。这是一个非常初学者的问题。
我通常这样定义程序:
#include using namespace std; string x;
我看到很多代码示例把字符串定义为:
std::string
这是什么目的呢?这是个好习惯还是有某些功能?
admin 更改状态以发布 2023年5月20日
string
的完整名称是std::string
,因为它驻留在namespace std
中,这是所有C++标准库函数、类和对象所在的命名空间。
在您的代码中,您明确添加了using namespace std;
,这使您可以在不使用std::
前缀的情况下使用标准命名空间中的任何内容。 因此,您可以使用简写的string
来引用std::string
(字符串类型的真实名称),因为编译器知道在namespace std
中查找它。
string
和std::string
之间没有功能上的区别,因为它们是相同的类型。 话虽如此,有时您可能更喜欢std::string
而不是string
。 例如,在头文件中,通常不建议放置using namespace std;
(或使用任何命名空间),因为它可能会导致包括该头文件的文件中的名称变得有歧义。 在这种设置中,您只需在头文件中#include
,然后使用std::string
来引用字符串类型。 同样,如果std::string
和其他一些string
类型之间存在任何歧义,使用名称std::string
将消除歧义。
是否完全包含using namespace std;
是一个备受争议的话题,许多程序员强烈支持或强烈反对。 我建议使用您习惯的任何内容,并确保在处理大型项目时采用使用的任何编码约定。