使用头文件而不是标准命名空间

时间:2013-01-29 11:44:04

标签: c++ header std

我很好奇C ++中是否有任何头文件可以使用(包含)而不是标准命名空间(namespace std),即使在新版本的C ++中它也能正常工作?我想知道我是否可以在不使用任何名称空间的情况下编写代码,并且仍然能够使用字符串数据类型。

4 个答案:

答案 0 :(得分:4)

string位于std命名空间中,因此您无法完全忽略它。

但有一些选择:

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

//or fully qualify the name
std::string mystr;

你可以把它放在标题中并包含它。

在那里,我现在给你了灾难的秘诀。 不要使用它!

命名空间很好。了解如何使用它们,而不是黑客攻击它们。

答案 1 :(得分:2)

标头和名称空间不相关,名称空间是好东西。 using namespace std很糟糕。您始终可以使用不std::string的{​​{1}}数据类型。

答案 2 :(得分:2)

使用“using namespace std;”是一个糟糕的主意(虽然我不得不承认我在我的样本中经常这样做,我在这里发布,以便于打字)。要在头文件中隐藏它是一个更糟糕的想法。

命名空间是有原因的。

但是,如果你有100000行现有代码写入命名空间之前的标准,并且你很快想要将其移植到新的编译器中,那么添加“using namespace std;”到每个文件的顶部将是首选的解决方案。

答案 3 :(得分:0)

你可以typedef你想要使用的课程,但这是一个非常糟糕的主意。

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