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源代码的主要内容,如果未能解决你的问题,请参考以下文章