#ifndef CPPREFERENCE_IOSTREAM_H
#define CPPREFERENCE_IOSTREAM_H
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
#include <iosfwd>
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
} // namespace std
#endif // CPPREFERENCE_IOSTREAM_H
代码是iostream标头。我试图了解如何在此头文件中实现函数cout。不幸的是,虽然我找不到它?
答案 0 :(得分:0)
这是如何在LLVM中实现的,如果我理解你的话,那就是你想要的?
http://llvm.org/svn/llvm-project/libcxx/trunk/src/ios.cpp
http://llvm.org/svn/llvm-project/libcxx/trunk/src/iostream.cpp
http://llvm.org/svn/llvm-project/libcxx/trunk/src/strstream.cpp
答案 1 :(得分:0)
你真的不会在这里看到任何实现。当您执行#include <iostream>
时,它所做的就是将此代码粘贴到您的代码中。这样编译器将看到所有定义,如extern istream cin
,它知道有类似std::cin
的东西。然而,这并不意味着它知道它是如何实现的。
C ++标准库的实现将来自某些dll
文件(在Windows操作系统上)。我认为这是MSVCP*.dll
。此dll
文件将包含特定于该操作系统的已编译机器代码。
编译应用程序时,dll
将链接到该应用程序。但你真的无法获得它的源代码(微软的人拥有它)。虽然您可以反汇编dll
,但要观察其中的代码。