10

私のコンピュータ サイエンスの教授は、 の宣言を見つけてほしいと思っています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」は「広い」を表しますが、それがどのような意味を持つのかはわかりません。awcoutと a とは何wostreamですか?

4

2 に答える 2

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 ヘッダーは、 (27.9.2) で<iostream>宣言された関数によって提供される標準 C ストリームにオブジェクトを関連付けるオブジェクトを宣言し、これらのオブジェクトを使用するために必要なすべてのヘッダーを含めます。<cstdio>

于 2012-03-11T04:24:00.840 に答える
2

それは cout の宣言で、cout は ostream クラスのインスタンスですか?

はい、それは の宣言でstd::coutあり、はい、それは のインスタンスですstd::ostreamexternヘッダーが複数の翻訳単位に含まれていても、オブジェクトが一度だけ作成されるように宣言されています。

于 2012-03-11T04:19:59.993 に答える