我的计算机科学教授希望我们找到以下声明 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 这样即使标头包含在多个翻译单元中,该对象也只创建一次。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top