0

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

4

4 回答 4

4

string位于std名称空间中,因此您不能完全忽略它。

不过有一些选择:

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

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

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

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

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

于 2013-01-29T11:46:16.473 回答
2

标头和命名空间不相关,命名空间是好东西。using namespace std不好。您始终可以使用std::string不带using namespace std;.

于 2013-01-29T11:45:53.300 回答
2

使用“使用命名空间标准;” 是一个糟糕的主意(尽管我不得不承认我在我在这里发布的示例中经常这样做,以便于打字)。将其隐藏在头文件中是一个更糟糕的主意。

命名空间的存在是有原因的。

但是,如果你有 100000 行已经存在的代码,这些代码是按照命名空间前标准编写的,并且你很快希望将其移植到新的编译器中使用,那么添加“使用命名空间 std;” 到每个文件的顶部将是首选解决方案。

于 2013-01-29T11:47:55.420 回答
0

您可以typedef使用您希望使用的类,但这是一个非常糟糕的主意。

#include <string>
typedef std::string string;
于 2013-01-29T11:47:23.307 回答