2010-11-18 23 views
2

J'ai fait quelques lectures, et je vois que je peux utiliser getch() pour obtenir une frappe. Ce que j'ai vu, c'est que c'est considéré comme une mauvaise pratique, mais j'ai vu des opinions contradictoires. J'écris une application console pour ma classe, et j'aimerais pouvoir déplacer un marqueur (*) autour de l'écran en fonction des touches fléchées appuyées. Est-ce que getch() est la bonne façon de procéder, ou existe-t-il une meilleure méthode pour le capturer? Je veux qu'ils soient juste en mesure de pousser la flèche, pas besoin de pousser entrer ou quoi que ce soit. Je n'ai pas besoin du code en particulier, je veux juste savoir si je devrais éviter getch(), et si oui, quelles fonctions sont là pour ce type d'idée.Capture d'une frappe en C++

+2

Quel système d'exploitation? –

Répondre

1

getch() n'est pas une fonction standard en C ou C++. Il se trouve dans certains compilateurs obsolètes, tels que Turbo C et il est également défini dans certaines bibliothèques couramment utilisées telles que curses, mais dans tous les cas, il s'agit d'une fonction C, pas C++. Pour C++, vous devriez probablement coller avec les E/S C++ standard. Si vous ne pouvez pas le faire pour une raison quelconque, optez pour l'option la plus portable, par ex. malédictions.

+0

y a-t-il une façon standard de C++ pour capturer les frappes pendant qu'elles sont tapées, ou est-ce que C++ a toujours besoin que l'entrée soit tamponnée? – Bear

+0

@bear: non, il n'y en a pas dans le standard C++ – smerlin

+0

Je pense que toute solution va être spécifique au système d'exploitation, ou va nécessiter une bibliothèque telle que curses ou ncurses. –

1

Vous souhaitez lire depuis le terminal en mode non canonique. Utilisez tcsetattr() pour désactiver le drapeau ICANON.

+0

ce que je cherchais merci! –

0

Utilisez getch() si cela fonctionne. Pourquoi pas?