¿Dónde se declara cout?
-
11-12-2019 - |
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
?
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.