Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment récupérer la touche Entrée du clavier dans un code qui est en mode console

Sujet résolu
    22 juillet 2007 à 1:35:32

    Bonsoir,
    Je voudrais savoir comment récupérer la touche Entrée du clavier dans un code qui est en mode console?

    Merci!
    • Partager sur Facebook
    • Partager sur Twitter
    :)
      22 juillet 2007 à 14:31:23

      J'ai oublié de dire que je voulais une bibliothèque portable (code valide pour Windows/linux/..)
      D'où la difficulté :lol:
      Merci
      • Partager sur Facebook
      • Partager sur Twitter
      :)
        22 juillet 2007 à 15:42:08

        Je sais qu'il existe une petite librairie portable, spécialisée dans la gestion des événements, que ce soit en console, ou pour une application avec une fenêtre. J'ai pas encore utilisé, personnellement, mais ça doit pas être mauvais, puisque c'est ce qu'utiliser Ogre3D pour sa gestion des événements.

        Voila le lien: Object Oriented Input System

        Par contre, la doc est quasi-inexistance, à ca que j'ai pu constater. Si quelqu'un qui sait ou elle se cache, ca peut aider. ;)
        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2007 à 19:21:55

          std::cin n'en est pas capable?

          Car en faite c'est pour améliorer ma fonction pause façon c++:

          void pause()
          {
              char num[1000];
              cout << "Appuyez sur une touche puis entree de votre clavier pour quitter le programme..." << endl;
              cin >> num;
          }
           
          • Partager sur Facebook
          • Partager sur Twitter
          :)
            23 juillet 2007 à 9:46:46

            Hum... pourquoi ne pas comparer la valeur ASCII de ce que t'as choppé cin avec la valeur de "entrer"?
            • Partager sur Facebook
            • Partager sur Twitter
              23 juillet 2007 à 14:42:07

              La documentation de la bibliothéque citée plus haut est en doxygen. (Juste besoin d' un compilateur). ;)

              Sinon, le plus simple est de faire

              while(true){
              char _Current = std::cin.get();
              if(_Current == std::endl){
              //...
              break;
              }
              }

              • Partager sur Facebook
              • Partager sur Twitter
                23 juillet 2007 à 18:57:29

                Je ne comprend pas ton code ostream, c'est quoi _Curent?
                • Partager sur Facebook
                • Partager sur Twitter
                :)
                Anonyme
                  23 juillet 2007 à 19:25:16

                  c'est juste un "char", il aurait pu l'appeler n'importe comment ça ne change rien.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juillet 2007 à 16:59:17

                    Que fait std::cin.get() ? pourquoi il n'utilise pas std::cin?
                    • Partager sur Facebook
                    • Partager sur Twitter
                    :)
                    Anonyme
                      25 juillet 2007 à 17:08:11

                      cin permet de lire une chaine formatée, cin.get() permet de lire un seul caractère.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 août 2007 à 17:17:25

                        Le code beug:

                        Project   : Console application
                        Compiler  : GNU GCC Compiler (called directly)
                        Directory : D:\Documents and Settings\Propriétaire\Mes documents\programme test C-C++\ma class\
                        --------------------------------------------------------------------------------
                        Switching to target: default
                        Compiling: main.cpp
                        main.cpp: In function `void pause()':
                        main.cpp:21: error: invalid operands of types `char' and `<unknown type>' to binary `operator=='
                        main.cpp:26:2: warning: no newline at end of file
                        Process terminated with status 1 (0 minutes, 0 seconds)
                        1 errors, 1 warnings



                        void pause()
                        {
                            while(true)
                            {
                                char _Current = std::cin.get();
                                if(_Current == std::endl)       /*##### ICI LIGNE ERROR  ########*/
                                {
                                break;
                                }
                            }
                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                        :)
                          6 août 2007 à 17:34:25

                          La methode 'std::istream::get()' fonctionne exactement comme la fonction 'getchar()' en C.
                          Donc:
                          void pause()
                          {
                             cin.get();
                          }


                          PS: 'std::endl' n'est pas un caractère, c'est une fonction que l'on appelle 'manipulateur'. Jette un coup d'oeil ici.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          comment récupérer la touche Entrée du clavier dans un code qui est en mode console

                          × 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