Partage
  • Partager sur Facebook
  • Partager sur Twitter

while(std::cin)

que fait cette ligne ?

Sujet résolu
    21 juillet 2007 à 14:08:13

    Bonjour,

    j'ai un problème concernant cin.
    J'aimerais savoir le rôle de cette boucle :

    while(std::cin){
    }


    ou plus précisément, que signifie std::cin comme ça, sans rien...

    D'avnce merci.
    • Partager sur Facebook
    • Partager sur Twitter
      21 juillet 2007 à 14:39:49

      Bin l'argument du while est un booléen, soit c'est vrai soit c'est pas vrai. Tout ce qui se trouve entre les parenthèses du while doit renvoyer soit 0, soit 1 (ou n'importe quoi d'autre). Dans ton cas, je sais pas trop comment std::cin pourrait renvoyer 0 (ce qui voudrait dire que l'action ne s'est pas déroulée correctement). Je pense que c'est une manière de boucler un std:cin jusqu'à ce qu'une condition à l'intérieur du while arrête tout et termine la boucle.
      • Partager sur Facebook
      • Partager sur Twitter
        21 juillet 2007 à 14:55:25

        Cette boucle continue tant que le flux est dans un état valide.

        Je la trouve mal formulée car c'est le coup à devoir faire deux tests.

        La forme canonique est "while (lit_qcq_chose(flux))".
        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          21 juillet 2007 à 15:55:44

          Et dans quel cas le flux serait-il "invalide" ?
          • Partager sur Facebook
          • Partager sur Twitter
            21 juillet 2007 à 16:08:12

            Exemples:
            * Extraction impossible (mauvais format)
            * Fin de flux
            * Erreur de lecture/écriture sur le flux (disque corrompu, disque plein (dans les cas des fichiers), erreur socket (dans le cas de flux encapsulant les sockets), ...)
            • Partager sur Facebook
            • Partager sur Twitter
            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

            while(std::cin)

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown