使用头文件而不是标准命名空间 我很好奇,如果C++中有任何头文件,它可以被用来代替标准的命名空间命名空间STD,即使在C++的新版本中也一样。我想知道我是否可以在不使用任何名称空间的情况下编写代码,并且仍然能够使用字符串数据类型

使用头文件而不是标准命名空间 我很好奇,如果C++中有任何头文件,它可以被用来代替标准的命名空间命名空间STD,即使在C++的新版本中也一样。我想知道我是否可以在不使用任何名称空间的情况下编写代码,并且仍然能够使用字符串数据类型,c++,header,std,C++,Header,Std,头和名称空间不相关,名称空间是好东西。使用名称空间std是不好的。您可以始终使用std::string数据类型,而不使用namespace std 字符串位于std名称空间中,因此不能完全忽略它 但也有一些选择: using std::string; using namespace std; typedef std::string myString; //or fully qualify the name std::string mystr; 你可以把它放在一个标题里,并包括在内 好了,现在

头和名称空间不相关,名称空间是好东西。使用名称空间std是不好的。您可以始终使用std::string数据类型,而不使用namespace std

字符串位于std名称空间中,因此不能完全忽略它

但也有一些选择:

using std::string;
using namespace std;
typedef std::string myString;

//or fully qualify the name
std::string mystr;
你可以把它放在一个标题里,并包括在内

好了,现在我给了你灾难的秘诀。不要用它

名称空间很好。学习如何使用它们,而不是绕开它们。

你可以键入你想要使用的类,但这是一个非常糟糕的主意

#include <string>
typedef std::string string;

使用名称空间std;这是一个糟糕的想法,尽管我不得不承认,为了便于打字,我在这里发布的样本中经常这样做。将其隐藏在头文件中是一个更糟糕的主意

名称空间的存在是有原因的


但是如果你有,比如说,100000行已经存在的代码是在名称空间标准之前编写的,并且你很快想把它们移植到一个新的编译器中,然后使用名称空间std添加;最好是在每个文件的顶部

为什么不添加名字空间?不要使用命名空间STD和No,因为这是一个可怕的猜想,因为有一堆旧代码没有命名空间限定符。我希望它与旧C++代码兼容,但我不能使用,因为我的编译器不是旧的。修复旧代码的唯一方法是修复它。使用STD::String;至少说明了我需要一个特别的部分,而不是洛洛洛,让codez来吧。不过,不要把它放在标题中。std::string MyString和typedef std::string MyString在功能上有什么区别?@MohammadSanei第一个创建变量,第二个定义类型。这样我就可以用MyString作为std::string的缩写了。谢谢!那将非常有用!使用std::string;是将字符串引入当前名称空间的首选方法。是的,我知道。但是他们不想使用using,而且用using污染标题也不好。不过,这么说,我只是用了一个不同的字体名,太完美了!我刚听懂你说的话!有没有办法在头文件中以类似的方式定义cout和endl而不使用它?这是一个非常糟糕的想法。有没有办法以类似的方式定义cout?