我的计算机科学教授希望我们找到cout
的声明。我使用g ++和-E参数编译了一个简单的Hello world程序。这是我的hello.cpp的样子:
#include <iostream>
using namespace std;
int main(){
string name="";
cout << "Good morning! What's your name?";
cin >> name;
cout << "Hello " << name << ".\n";
return 0;
}
我的编译命令:
g++ -E hello.cpp > hello.p
在hello.p中,我在VIM中运行了搜索,如下所示:
:/cout
我看到以下一行:
extern ostream cout;
这是cout
的声明,cout
是ostream
类的实例吗?
修改
那里的wcout
声明是什么?如果我没记错的话,字母“w”代表“宽”,但我不知道它有什么含义。什么是wcout
和wostream
?
答案 0 :(得分:8)
是的,这确实是在std::cout
标题内找到<iostream>
的声明。
相关标准部分可在§27.4.1 [iostream.objects.overview]
:
标题
<iostream>
简介
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
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;
}
p1标头
<iostream>
声明将对象与<cstdio>
(27.9.2)中声明的函数提供的标准C流相关联的对象,并包括使用这些对象所需的所有标头。
答案 1 :(得分:2)
这是cout的声明,是cout ostream类的一个实例吗?
是的,这是std::cout
的声明,是的,它是std::ostream
的一个实例。它被声明为extern
,因此即使标题包含在多个翻译单元中,对象也只会创建一次。