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 :

Fonctions while et cin


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut Fonctions while et cin
    Bonjour,

    Je ne comprends pas comment il est possible de sortir de ce while de cette manière :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cout << "Entrer un chiffre : ";
    	while (!(cin >> res))
    	{
    		cin.clear();
    		cin.ignore(numeric_limits<streamsize>::max(), '\n');
    		cout << "entrer un nombre correct svp : " << endl;
    	}
    En effet, normalement, dans un while il faut du code permettant de sortir du while, c'est pourquoi moi j'aurais écrit ce code de cette manière-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cout << "Entrer un chiffre : ";
    	while (!(cin >> res))
    	{
    		cin.clear();
    		cin.ignore(numeric_limits<streamsize>::max(), '\n');
    		cout << "entrer un nombre correct svp : " << endl;
    		cin >> res;
    	}

    Est-ce que quelqu'un pourrait me dire pour quelle raison j'ai tort d'ajouter ?

    Merci pour votre aide.

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    La boucle possède déjà une condition (!(std::cin >> res)) qui veut dire "lit un nombre à mettre dans res et arrête toi si mon flux est valide".
    Il faut comprendre que l'opérateur >> sur un flux retourne le même flux (pour faire du chaînage cin >> a >> b) et qu'un test sur un flux est l'équivalent de !monflux.fail() (operator bool ())

    Si tu rajoutes cin >> res en fin de boucle, il faudra rentrer 2 fois la valeur.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    donne, après l'opération de flux (voir explication dans le message précédent) :

    Est ensuite appelé sur cin soit l'opérateur de conversion vers bool en C++11/14, soit l'opérateur de conversion vers void* pour les versions précédentes (parce qu'il semble que lors de la création de la STL, le qualificateur explicit n'existait pas, et que d'indiquer un type de retour bool causait de désagréables effets de bord).

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Merci pour votre aide et pour vos réponses.

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

Discussions similaires

  1. Fonction "while"
    Par dharth dans le forum Débuter
    Réponses: 2
    Dernier message: 25/06/2009, 19h51
  2. Autolisp et fonction while
    Par Saltimbs dans le forum Lisp
    Réponses: 1
    Dernier message: 26/06/2008, 17h17
  3. [MySQL] conflit entre deux fonction while
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/12/2006, 12h56
  4. [MySQL] Conflit entre deux fonction WHILE
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2006, 18h15
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

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