Où est le cout déclaré?
-
11-12-2019 - |
Question
Mon professeur d'informatique veut que nous trouvons la déclaration de cout
.J'ai compilé un simple programme "Hello world" à l'aide de g++ et le paramètre-E.Voici ce que mon hello.cpp ressemble:
#include <iostream>
using namespace std;
int main(){
string name="";
cout << "Good morning! What's your name?";
cin >> name;
cout << "Hello " << name << ".\n";
return 0;
}
Ma compilation de commande:
g++ -E hello.cpp > hello.p
Dans bonjour.p, j'ai couru une recherche dans VIM, comme suit:
:/cout
Je vois la ligne suivante:
extern ostream cout;
Est que la déclaration de cout
, et est cout
une instance de la ostream
de classe?
Edit:
Quelle est la wcout
déclaration de là bas?Si je me souviens bien de la lettre "w" signifie "large", mais je ne sais pas ce qui implique que a des.Qu'est ce qu'un wcout
et un wostream
?
La solution
Oui, c'est en effet la déclaration de std::cout
, trouvé à l'intérieur de la <iostream>
l'en-tête.
La norme pertinente de la partie peut être trouvé dans §27.4.1 [iostream.objects.overview]
:
L'en-tête
<iostream>
synopsis
#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 L'en-tête
<iostream>
déclare des objets qui associent des objets avec la norme C flux fourni par les fonctions déclarées dans<cstdio>
(27.9.2), et comprend tous les en-têtes nécessaires à l'utilisation de ces objets.
Autres conseils
Est que la déclaration de cout, et est le cout d'une instance de la classe ostream?
Oui, c'est la déclaration de std::cout
et oui, c'est une instance de std::ostream
.Il est déclaré extern
de sorte que l'objet n'est créé qu'une seule fois, même si l'en-tête est inclus dans plusieurs unités de traduction.