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

 C++ Discussion :

compléter mot-clef cin.ignore()


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut compléter mot-clef cin.ignore()
    Bonjour,
    Pour stopper une exécution j'utilise cin.ignore();
    Le curseur s'affiche donc mais aucune instruction ne s'affiche à l'écran.
    Que se passe-t-il? Arrêt intempestif ou normal?
    J'ajoute donc "...<E>";cin.ignore();
    ce qui pour "moi" équivaut à "appuyer sur une touche pour continuer l'exécution".

    Pour éviter d'écrire à chaque fois ....<E>;cin.ignore();
    je voudrais écrire
    string stp="<E>"+cin.ignore(); ligne qui ne compile pas évidemment.
    Merci pour vos lumières.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Le fait est que, cin.ignore est une fonction membre de ... l'entrée standard, alors que tout l'affichage passe par cout, qui est... la sortie standard.

    Du coup, si tu veux afficher quelque chose qui indique à l'utilisateur qu'il doit appuyer sur <enter> avant de pouvoir continuer, tu dois impérativement envoyer le message à afficher dans... cout.

    Le plus facile (histoire de ne pas avoir à recopier encore et toujours la même chose) consiste sans doute à créer une fonction (appelons la void pause(), par exemple) qui pourrait prendre une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void pause(){
        /* d'abord, on affiche le message */
        std::cout<<"Appuyez sur <enter> pour la suite ";
        /* ensuite, on attend que l'utilisateur appuie sur la touche <enter> (quoi qu'il ait pu
         * introduire avant, ce sera ignoré )
         */
        std::cin.ignore( numeric_limits<streamsize>::max(), '\n' ); 
    }
    C'est, en gros, ce que dit la FAQ, bien qu'elle présente le cas d'une pause unique générée directement dans la fonction principale

    NOTA: la plupart des EDI proposent un réglage au niveau du projet permettant de mettre l'application en pause à la fin de l'exécution, et, s'il est parfois intéressant de créer une pause en cours d'exécution (par exemple, pour ne faire défiler qu'un nombre bien précis d'information dans la console), il n'y a que rarement de bonnes raisons pour faire en sorte que l'application se mette en pause juste avant de s'arrêter.

    On préférera donc utiliser le réglage de l'EDI pour que l'application reste en pause à la fin de son exécution en période de développement, histoire de se donner le temps de voir les derniers messages qu'elle affiche, de manière à ce que cette pause ne survienne pas (plus ?) une fois que l'application sera utilisée en "mode réel"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    Merci! Parfait! Et Prompt!
    Exactement ce que je cherchais!
    Je vais économiser de la frappe23-8)x n=....!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/03/2006, 09h55
  2. mot-clef static
    Par keil dans le forum C++
    Réponses: 8
    Dernier message: 25/01/2006, 17h11
  3. probleme avec cin.ignore()
    Par Stany dans le forum SL & STL
    Réponses: 17
    Dernier message: 09/04/2005, 13h57
  4. mot clef sql pour nom de champ
    Par bobinou007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 13h21

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