IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

[débutant]problème à l'utilisation de cin et cout


Sujet :

SL & STL C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [débutant]problème à l'utilisation de cin et cout
    Bonjour à tous,

    J'ai un soucis avec l'utilisation de cin et cout : à la compilation, j'ai le message d'erreur : 'identificateur non déclaré'.

    J'ai pourtant bien placé en haut de page :
    #include <iostream>ainsi que :
    using spacename std
    si je tente de faire :
    std::cin ou std::cout
    j'ai le message d'erreur suivant : 'n'est pas membre de std'

    Ce que je trouve étrange c'est que cela fonctionnait avec DEV C++ mais je dois travailler avec Microsoft Visual Studio 2005 (version 8.0.50727.762).

    Auriez-vous une idée de la cause de ces erreurs?

    Merci d'avance et bonne après-midi à tous

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Normalement pour utiliser std::cin et std::cout il faut inclure <iostream>, <istream> et <ostream>.

    Mais je ne crois pas que cela soit le problème ici, je penche plutôt pour un problème d'installation du compilateur.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Points : 75
    Points
    75
    Par défaut
    using spacename std
    si je tente de faire :
    std::cin ou std::cout
    j'ai le message d'erreur suivant : 'n'est pas membre de std'

    Euh, je crois que si tu fais un using namespace std;, tu n'as pas besoin de mettre "std::" devant cin et cout. Je ne sais pas si ça pose problème, j'ai jamais testé. Mais logiquement, ça te donnerait std::std::cin, vu que tu l'envoies dans la classe deux fois.
    Donc, essaie en mettant soit using namespace std; ou en te servant de std::cin / std::cout à chaque fois.

    Sinon, assure toi de bien te servir d'un compilateur C++ (Mais je pense, même presque sur que ce n'est pas le problème, vu que VS donne d'office un compilateur C++)

    Bonne soirée ^^
    en espérant avoir pu t'aider.

    EDIT : Enfin ma reflexion est peut-être bête, vu que ça marchait sous Dev-cpp avant.

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Normalement, la directive using permet juste de faciliter l'écriture, justement, en indiquant, dans le cas qui nous intéresse, que tout ce qui se trouve dans l'espace de nommage (namespace) std est accessible dans l'espace de nommage en cours...

    Je parles ici d'espace de nommage en cours, parce qu'il peut s'agir tout aussi bien de l'espace de nommage global, si tu ne place pas tes structures perso dans un espace de nommage particulier, que l'espace de nommage que tu auras toi meme déclaré

    Il ne devrait théoriquement pas y avoir de problème à écrire un code du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
    	std::cout << "Hello world!" << std::endl;
    	return 0;
    }
    Le seul cas où cela pourrait poser problème, c'est si tu en venais à créer une nouvelle structure personnelle dont le nom pourrait rentrer en conflit avec une structure définie dans l'espace de nommage que tu indiques vouloir utiliser...

    Cependant, microsoft ayant l'habitude de n'en faire à peu de chose pres qu'à sa tete en ce qui concerne l'implémentation des standards (et pas seulement en ce qui concerne ceux du C++), il n'est pas impossible qu'il te faille rajouter une entete qui soit propre à VC++ (stdafx.h, peut etre ) ou qu'il faille aller voir du coté des options de compilations, et principalement du coté des bibliotheques à utiliser

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Points : 75
    Points
    75
    Par défaut
    Je viens de tester, et en fait, mettre les deux ça marche. Je parle de "using namespace std;" et "std::cout", mais je doute qu'on aie besoin de rajouter une entête. Mais bon je ne sais pas ^^ Je reste pour tester d'enlever un des "std::" pour ne pas "embrouiller" la classe Comme c'est VC

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 629
    Points : 30 692
    Points
    30 692
    Par défaut
    En fait, il faut bien séparer deux problèmes distincts...

    D'un coté, il y a le problème de l'inclusion des entete adéquates, et de l'autre, celui des directives d'utilisation...

    Pour utiliser les flux d'entrées/sorties, (cin, cout et cerr), il faut inclure l'entete <iostream>.

    Mais, il semble que le fichier stdafx soit souvent requis.

    Pour la directive d'utilisation, ainsi que le l'ai signalé, elle permet "juste", normalement, de "simplifier" l'écriture ( cout<<"salut"<<endl au lieu de std::cout<<"salut"<<std::endl).

    Je n'utilise pas assez VC++2005 pour etre catégorique quant aux fichiers que requière le système pour pouvoir travailler correctement, et je n'émettais donc qu'une hypotèse qui ne demande qu'à etre vérifiée

    Par contre, personnellement, je préfères ne pas avoir recours à la directive d'utilisation...

    Cela crée un code un peu plus long à écrire, soit, mais au moins, ca force à etre plus explicite dans ce qui est fait, en permettant d'éviter les conflits

    Evidemment, ce n'est que mon avis personnel... mais je le partage

  7. #7
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Au lieu de tourner autour du code , et si tu nous le donnais ?
    Cela serrait bien plus facile.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/01/2008, 14h52
  2. Réponses: 3
    Dernier message: 27/09/2007, 13h55
  3. Réponses: 7
    Dernier message: 16/08/2007, 14h35
  4. Réponses: 2
    Dernier message: 05/01/2006, 03h40
  5. [Débutant]Problème d'utilisation package
    Par KJHER dans le forum Langage
    Réponses: 6
    Dernier message: 04/10/2005, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo