web-dev-qa-db-fra.com

Le #include <iostream> existe, mais j'obtiens une erreur: l'identifiant "cout" n'est pas défini. Pourquoi?

J'apprends le C++ et le COM à travers les livres. Dans le IDE MS Visual Studio 2012, j'ai créé un nouveau projet C++ vide et y ai ajouté des fichiers existants. Mon fichier CPP contient #include<iostream> row, mais dans l'éditeur, j'ai reçu de tels messages:

Erreur: l'identifiant "cout" n'est pas défini

fin

Erreur: l'identifiant "endl" n'est pas défini

Écran:

enter image description here

Pourquoi ça arrive?

31
Andrey Bushman

Vous devez spécifier l'espace de noms std:::

std::cout << .... << std::endl;;

Alternativement, vous pouvez utiliser une directive using:

using std::cout;
using std::endl;

cout << .... << endl;

Je dois ajouter que vous devez éviter ces directives using dans les en-têtes, car le code incluant celles-ci aura également les symboles introduits dans l'espace de noms global. Restreindre l'utilisation de directives à de petites étendues, par exemple

#include <iostream>

inline void foo()
{
  using std::cout;
  using std::endl;
  cout << "Hello world" << endl;
}

Ici, la directive using s'applique uniquement à la portée de foo().

40
juanchopanza

Vous pouvez l'ajouter au début après #include <iostream>:

using namespace std;
6
arash

cout est dans l'espace de noms std, vous devez utiliser std::cout dans votre code. Et vous n'ajouterez pas using namespace std; dans votre fichier d'en-tête, il est mauvais de mélanger votre code avec l'espace de noms std, surtout ne l'ajoutez pas dans le fichier d'en-tête.

6
billz