Pregunta

Mi profesor de informática quiere que encontremos la declaración de cout.He compilado un programa simple Hola mundo usando g++ y el parámetro -E.Así es como se ve mi 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; 

}

Mi comando de compilación:

g++ -E hello.cpp > hello.p

En hello.p, realicé una búsqueda en VIM, así:

:/cout

Veo la siguiente línea:

extern ostream cout;

¿Es esa la declaración de cout, y es cout una instancia de la ostream ¿clase?

Editar:

cual es el wcout declaración allí para?Si no recuerdo mal, la letra "w" significa "ancho", pero no sé qué implicaciones tiene eso.¿Qué es un wcout y un wostream?

¿Fue útil?

Solución

Sí, esa es efectivamente la declaración de std::cout, que se encuentra dentro del <iostream> encabezamiento.

La parte estándar correspondiente se puede encontrar en §27.4.1 [iostream.objects.overview]:

Encabezamiento <iostream> sinopsis

#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 El encabezado <iostream> declara objetos que asocian objetos con los flujos C estándar proporcionados por las funciones declaradas en <cstdio> (27.9.2), e incluye todos los encabezados necesarios para utilizar estos objetos.

Otros consejos

¿Es esa la declaración de cout y es cout una instancia de la clase ostream?

Sí, esa es la declaración de std::cout y sí, es una instancia de std::ostream.esta declarado extern de modo que el objeto solo se crea una vez, incluso si el encabezado se incluye en varias unidades de traducción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top