题
我的计算机科学教授希望我们找到以下声明 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
?
解决方案
是的,这确实是声明 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>
声明将对象与标准 C 流相关联的对象,该标准 C 流由中声明的函数提供<cstdio>
(27.9.2),并包括使用这些对象所需的所有标头。
其他提示
这是 cout 的声明,并且 cout 是 ostream 类的实例吗?
是的,这就是声明 std::cout
是的,这是一个实例 std::ostream
. 。已宣布 extern
这样即使标头包含在多个翻译单元中,该对象也只创建一次。
不隶属于 StackOverflow