是否可以在c++中查看命名空间的所有内容?

Is it possible to view all the contents of a namespace in c ++?

当你执行命令时:

using namespace std;

您可以直接访问 std 命名空间的 所有 元素。但是假设您只想使用 std::coutstd::endl,那么最好使用指令:

using std::cout;
using std::endl;

所以您只会得到您需要使用的对象 而不是全部。 我的问题是: 有没有办法查看使用命令时添加的内容:

using namespace std;

类似于:(我知道这是非常错误的。)

#include <iostream>
using namespace std;

int main(){

cout << std;

return 0;
}

当您声明您正在使用 namespace std 时,您告诉编译器特定命名空间中的所有函数和 objects 都可以访问,而无需为命名空间的名称添加前缀。

您导入的 iostream 实际上只是一个 header。但是在这个 header 中声明了原型,并且这些原型在名称空间中组织(std 在这种情况下)。

根据 C++ 标准开发库的不同,文件 iostream 的内容可能会有所不同。然而标准库的实现是...标准的。

在此处查看源代码示例:GCC - Libstdc++ iostream

您可以在 header 中看到在 namespace std 中声明的函数:

00043 namespace std _GLIBCXX_VISIBILITY(default)
00044 {
...
00061   extern istream cin;       /// Linked to standard input
00062   extern ostream cout;      /// Linked to standard output
00063   extern ostream cerr;      /// Linked to standard error (unbuffered)
00064   extern ostream clog;      /// Linked to standard error (buffered)
...
00067   extern wistream wcin;     /// Linked to standard input
00068   extern wostream wcout;    /// Linked to standard output
00069   extern wostream wcerr;    /// Linked to standard error (unbuffered)
00070   extern wostream wclog;    /// Linked to standard error (buffered)
...

请注意,某些 IDE(Visual Studio 和 cons)可能会为您提供语法完成功能,让您可以查看命名空间或 class 范围内的内容。

查看命名空间提供什么的工具是提供该命名空间的任何内容的文档以及定义命名空间内容的headers。
由于 headers 通常是高度优化的,并不是真正适合人眼,所以最好的方法是阅读文档。
例如,std 中内容的说明可在许多网站上找到。

查看任何其他命名空间,您(希望)也可以获得文档和 headers。

对于 "viewing" 编程,恐怕我必须同意 Sam。

Features of the C++ Standard Library are declared within the std namespace.

--> C++ Standard Library headers