如何找到包含文件的“命名空间关键字”?

时间:2011-08-14 12:31:49

标签: c++ namespaces include

我是新手C ++程序员。 我怎样才能找到像'iomanip'或其他任何一个包含的名称空间(在这个上下文中这是正确的单词吗?)? 当使用'std :: cout'时,我不知道为什么它是'std'而不是别的。

我希望我的问题很清楚,值得一提。

PS:我在这里的第一篇文章:)

3 个答案:

答案 0 :(得分:5)

你怎么知道cout首先存在?

因为您已阅读友好手册,语言标准,好书或在线参考。这同样适用于所有内容:您的文档或参考文件将告诉您找到类型的命名空间。

通常,C ++标准库中的所有内容都在std命名空间中,但有些内容可能位于嵌套在其中的命名空间中。嵌套命名空间的显着示例是std::placeholdersstd::chrono。但是,如果您阅读了一个好的参考文献,告诉正确的名称空间。

感谢@Potatoswatter:使用相同范围分辨率语法的其他构造是类的静态常量。例如,类std::ios_base包含静态成员类型seekdir,其静态常量值为begcurend;可以通过std::ios_base::beg等访问这些内容。或者,因为类型std::ios继承自ios_base,通过std::ios::beg等。

在许多方面,只有静态成员的类只是一个美化的命名空间,在C ++的早期,人们经常使用嵌套类来“模拟”当时不可用的嵌套命名空间。范围分辨率语法相同。

答案 1 :(得分:2)

它是std,因为cout等位于标准库中,整个标准库位于std命名空间内。

其他库可能有自己的命名空间(例如Boost在boost命名空间内)。但您必须查阅相关文档以了解详细信息!

答案 2 :(得分:2)

要访问iostream库中声明的函数,我们使用一个名称空间,它只是属于一个组或系列的标识符(变量名和一些其他类型的名称)的集合。

现在std是命名空间,c ++标准库中的所有标识符都属于它。 有两种方法可以引用属于命名空间的特定标识符:

  1. 在程序开头使用using语句
  2. 在标识符前面添加名称空间,后跟2个冒号,例如: std::cout<<"hello";