c++ STL cout源代码

Posted

技术标签:

【中文标题】c++ STL cout源代码【英文标题】:c++ STL cout source code 【发布时间】:2012-05-20 19:07:08 【问题描述】:

我想看看 STL std::cout 函数的源代码。我查看了 iostream,但我只看到了“extern cout”。所以,我猜它是在库中的某个地方定义的。

我从official site下载源代码

我提取并做了:

sh@sh-R528-R728:~/desktop/stl$ grep -F * | grep "cout"

但我一无所获。

我做错了什么?源代码在哪里?

【问题讨论】:

我敢打赌源代码会灼伤你的眼睛。 std::cout 不是一个函数,它是一个对象。除此之外,在 iostream.cpp 中使用 libc++ 试试运气。 operator<< 是您可能感兴趣的内容。搜索。 std::cout 也不属于 STL。 @shbk - 大部分来源是您可以在标题中找到的模板。 std::cout 只是 ostream 类型的对象。您将在编译器随附的<ostream> 中找到所有这些内容。 【参考方案1】:

如果您碰巧使用 GCC,那么libstdc++ 就是您的 C++ 库。其来源可以在gcc.gnu.org 上找到。 cout 定义在 src/c++98/globals_io.cc 的第 58 行。

【讨论】:

【参考方案2】:

cout 不是 STL 的一部分,因此您不会在 STL 源代码中找到 cout 的源代码。

您可能想要查找 C++ 标准库的源代码,该库基于 STL,但也包含 iostream。这取决于您使用的平台。

【讨论】:

好吧,我在这里看到cplusplus.com/reference 很好。 cout 的标头是 ostream。我在 ostream 中找不到 cout 的实现。你能告诉我如何找到它吗?我寻找“cout”这个词,我只在 cmets 中找到它。 @shbk: cout 不应该在 ostream 中,它应该在 iostream 中。但正如 cmets 中所说,cout 是一个对象,而不是一个函数。所以找到 cout 不会告诉你它是如何工作的。您需要找到它的类(ostream)和该类的功能。 @MooingDuck:C++ 标准库并非源自 STL 的副本;相反,它包含了 STL 的大部分(但不是全部,即使在 C++11 中也是如此)。 @shbk:忘记 COUT。这不是您要寻找的。阅读我们所说的内容。 @Mooing 不仅如此 - OP 的链接指向 SGI STL,它绝对不包括 cout【参考方案3】:

std::cout 不是函数,它是绑定到标准输出的std::ostream (interface description) 的实例。

如果您使用的是 gcc/libstdc++,请尽情在线浏览其source code

【讨论】:

更好:gcc.gnu.org/git/?p=gcc.git&a=search&h=HEAD&st=grep&s=\bcout\b&sr=1

以上是关于c++ STL cout源代码的主要内容,如果未能解决你的问题,请参考以下文章

C++提高教程 STL -string赋值操作

C++ 提高教程 STL -String 字符串删除和存取

C++提高第三篇3 STL常用容器 deque

STL deque 代码

STL常见用法

C++ STL 之 常用算法