有人知道我在哪里可以找到std::名称空间的列表吗??(对于C++98)

Does anyone know where I can find a list of the std:: namespace?? (for C++ 98)

本文关键字:列表 空间 C++98 对于 在哪里 std      更新时间:2023-10-16

在包含using指令后,我想知道哪些单词不应该用作变量。我似乎找不到命名空间的列表:(非常感谢帮助:)

std命名空间中所有名称的最明确列表是C++标准。当前版本超过1300页,可能在std中包含数千个唯一标识符。除此之外,一些编译器可能还会在std中包含一些特定于平台的标识符,而这些标识符在很大程度上是未记录的——因此,您必须检查有问题的编译器的源代码(如果可能的话),并在每次制作补丁时重新检查。

看起来很吓人?很好,希望我能引起你的注意。

不要在代码中执行using namespace std特别是不要在头文件中使用use namespace std。将您的标识符放入其自己的命名空间中。现在,您不必关心谁的命名空间中有什么。你想怎么称呼就怎么称呼。

我完全赞成懒惰,但要聪明。如果你想从std中提取特定的名称,这样你就不必一遍又一遍地键入std::,只需输入以下内容:

using std::string;

没有你不需要的东西。但是只能在CPP文件中执行此操作,而不能在标头中执行。

更好的想法是:不要在代码中使用using namespace std;。我从来没有听说过一种方法可以列出std::命名空间中的所有内容。

除了John Dibling的回答提供的信息外,我想指出的是,即使在编写using namespace std;时,也不一定要避免std命名空间中的名称。您可以通过限定名称来解决存在using指令时的歧义。您甚至可以使用顶级::限定"全局"命名空间中的名称。

#include <iostream>
using namespace std;
int cout;
int main() {
  ::cout = 10;
}

我想指出这一点的原因是,我知道许多C++程序员,即使在使用它几年后,也不知道如何在全局名称空间中限定名称。