Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4769 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  kbhit en c++ ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

kbhit en c++ ?

n°761046
blackgodde​ss
vive le troll !
Posté le 12-06-2004 à 00:29:00  profilanswer
 

Bonjour,  
je cherche s'il existe un équivalent de kbhit en c++.
cette fonction retourne une valeur différente de 0 si une touche a été pressé, 0 sinon.


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 12-06-2004 à 00:29:00  profilanswer
 

n°761054
blackgodde​ss
vive le troll !
Posté le 12-06-2004 à 00:36:37  profilanswer
 

mon but serait d'arriver a faire quelque chose comme ca en c++ :
 

Code :
  1. int main()
  2. {
  3. // boucle principale
  4. while(1)
  5. {
  6.  if(kbhit())
  7.  {
  8.   int c = getch();
  9.   // gestion de la saisie
  10.  }
  11.  // autres traitements à effectuer
  12. }
  13. }


---------------
-( BlackGoddess )-
n°761085
red factio​n
Posté le 12-06-2004 à 01:58:53  profilanswer
 

ca doit rester portable ?
quel environnement ?

n°761111
el muchach​o
Comfortably Numb
Posté le 12-06-2004 à 08:31:17  profilanswer
 

Il faut faire appel à des interruptions système, ou mieux, X-Windows. Bref, à moins de fair une moche boucle avec un getch(), c'est pas portable.
 
http://www.dbforums.com/archive/in [...] 62178.html
 
Tu peux peut-être aussi regarder la FAQ XFree86 (ou son successeur).

n°761116
Taz
bisounours-codeur
Posté le 12-06-2004 à 09:27:29  profilanswer
 

genre ni le C ni le C++ ne savent ce qu'est un clavier, alors vous pouvez chercher ....

n°761128
Joel F
Real men use unique_ptr
Posté le 12-06-2004 à 10:09:05  profilanswer
 

et genre Taz a deja donner 50000 fois une soluce propre.

n°761191
el muchach​o
Comfortably Numb
Posté le 12-06-2004 à 11:59:33  profilanswer
 

Ca m'intéresse...
 
Tiens d'ailleurs, il y a la même question pas loin, sur le topic "getcg et getkey".


Message édité par el muchacho le 12-06-2004 à 12:01:10
n°761221
blackgodde​ss
vive le troll !
Posté le 12-06-2004 à 12:56:36  profilanswer
 

http://forum.hardware.fr/forum2.ph [...] 545&cat=10
http://www.cppfrance.com/code.aspx?ID=10611
 
par contre sous windows avec kbhit et getch, les std::cout foire ompletement apres :/ ca ecrase le texte deja ecrit sur la console


---------------
-( BlackGoddess )-
n°761237
Taz
bisounours-codeur
Posté le 12-06-2004 à 13:18:14  profilanswer
 

DTC
 
la norme précise bien que par défaut stdio et iostream doivent être synchronisés ...
 

Code :
  1. #include <iostream>
  2. #include <cstdio>
  3. int main()
  4. {
  5. #ifdef SYNK
  6.         std::ios_base::sync_with_stdio(SYNK);
  7. #endif
  8.         std::cout << "plop";
  9.         std::printf("coin" );
  10. }


 


[13:17:29][pts/91][/tmp][#23]
benoit@athlon >>> g++_iso sync.cpp && ./a.out
plopcoin
[13:17:35][pts/91][/tmp][#24]
benoit@athlon >>> g++_iso -DSYNK=true sync.cpp && ./a.out
plopcoin
[13:17:42][pts/91][/tmp][#25]
benoit@athlon >>> g++_iso -DSYNK=false sync.cpp && ./a.out
coinplop


Message édité par Taz le 12-06-2004 à 13:18:50
n°761250
blackgodde​ss
vive le troll !
Posté le 12-06-2004 à 13:45:16  profilanswer
 

oui oui deja ca me faisait bizarre de mélanger du C et du C++ :/
 
par exemple getch prend en compte l'appui sur [tab], std::cin l'ignore
 
le problème venait du fait que l'appui sur la touche [entrée] correspond a \r pour getch, et pour faire un saut de ligne il faut faire std::cout << '\n';


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 12-06-2004 à 13:45:16  profilanswer
 

n°761253
Taz
bisounours-codeur
Posté le 12-06-2004 à 13:48:47  profilanswer
 

je sais pas, j'ai jamais utilisé getch :o
 
si getch te renvoie '\r' sur une [Entrée] c'est que c'est vraiment de la merde

n°762527
blatty
Posté le 14-06-2004 à 11:06:50  profilanswer
 

BlackGoddess a écrit :

oui oui deja ca me faisait bizarre de mélanger du C et du C++ :/
 
par exemple getch prend en compte l'appui sur [tab], std::cin l'ignore
 
le problème venait du fait que l'appui sur la touche [entrée] correspond a \r pour getch, et pour faire un saut de ligne il faut faire std::cout << '\n';


 
int getkey ()
  /* attend qu'une cle du clavier soit enfoncee et renvoie le
     code etendue du caractere correspondant (cf. keys.h)  */
{
  //declarations locales
  int  code;
  //actions
  while (!kbhit());
  code=getch();
  if (code equ 0) code=getch()+0x100;
  return code;
}
si tu veux utiliser ca il te faut ca  de preference apres:
# include <keys.h>
# "un conio complet pas celui de dev c++" http://tmk.jeuxcs.free.fr/prog/conio-bis.h


Message édité par blatty le 14-06-2004 à 11:08:37
n°762746
HelloWorld
Salut tout le monde!
Posté le 14-06-2004 à 14:08:17  profilanswer
 

VC++ :

Citation :

test.cpp(1): fatal error C1083: Impossible d'ouvrir le fichier include : 'keys.h' : No such file or directory



---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°770081
blatty
Posté le 19-06-2004 à 22:40:58  profilanswer
 

HelloWorld a écrit :

VC++ :

Citation :

test.cpp(1): fatal error C1083: Impossible d'ouvrir le fichier include : 'keys.h' : No such file or directory




! prends le !

n°770082
Taz
bisounours-codeur
Posté le 19-06-2004 à 22:41:37  profilanswer
 

toi tu ferais bien de t'instruire sur ce qu'est un fichier.h ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  kbhit en c++ ?

 

Sujets relatifs
kkun pourrait m'expliker comment marche cette fonction kbhit ?l'equivalent du kbhit() pour linux ????
[C]une commande pour linux qui serait equivalente a kbhit ?? 
Plus de sujets relatifs à : kbhit en c++ ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)