执行命令时:
using namespace std;
您可以直接访问std命名空间的所有元素。但是假设您只想使用std::cout
或std::endl
,那么最好使用该指令:
using std::cout;
using std::endl;
所以你只能获得你需要使用的对象而不是全部。 我的问题是: 有没有办法查看使用命令时添加的内容:
using namespace std;
类似的东西:(我知道这是非常错误的。)
#include <iostream>
using namespace std;
int main(){
cout << std;
return 0;
}
答案 0 :(得分:0)
查看命名空间提供内容的工具是提供该命名空间和定义命名空间内容的标头的文档。
由于标题通常是高度优化的,而不是真正适合人眼,所以最好的方法是阅读doucmentation
例如,std
内部的内容可以在很多网站上找到。
查看任何其他命名空间,您(希望)也可以获得文档和标题。
对于以编程方式“观看”,我恐怕不得不同意Sam。
答案 1 :(得分:-2)
当您声明正在使用namespace std
时,您告诉编译器可以访问特定命名空间中的所有函数和对象,而无需为命名空间的名称添加前缀。
您导入的iostream
实际上只是一个标题。但是在这个头文件中声明了原型,并且这些原型在命名空间内组织(在这种情况下为std
)。
根据C ++标准开发库,文件iostream
的内容可能会有所不同。但是标准库的实现是......标准的。
在这里查看源代码示例:GCC - Libstdc++ iostream
您可以在标题中看到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)可能会为您提供语法完成功能,允许您查看命名空间或类范围内的内容。