2011-12-08 6 views
9

これは以前に尋ねられたはずだと確信していますが、クイック検索では何も見つかりませんでした。cinから矢印キーを取得する

cinで矢印/方向キーを取得するにはどうすればよいですか?

答えて

12

これまでに本当に尋ねられたのは、あなたがそれをすることができないということです。

C++には、キーボードやコンソールの概念がありません。不透明な入力データストリームしか知りません。

物理的なコンソールは、キーボードのアクティビティを前処理してバッファリングし、調理したデータのみを通常は行単位でプログラムに送信します。キーボードと直接対話するには、プラットフォーム固有のターミナル処理ライブラリが必要です。

Linuxでは、これは通常ncursesまたはtermcap/terminfoライブラリで行われます。 Windowsでは、pdcurses、またはおそらくWindows APIを使用することができます(私はその側面に慣れていませんが)。

SDL、Allegro、Irrlicht、Ogre3Dなどのグラフィックアプリケーションフレームワークには、完全なキーボードとマウス操作が付属しています。

+7

winAPIに精通していないのは本当に幸運です。無視するのは簡単! :) – FailedDev

+1

@FailedDev:hehe - 私はそれを少し知っています。ハンガリー語の舌巻きとLPHANDLEの分け前を見たことがあります:-)私は、いくつかの指針で自由にチャイムすることができます! :-) –

+0

:)私はそれが可能であると確信していますが、このような何かをしていない。しかし、OPは特定のOSに興味があるようではありません: – FailedDev

10

getch()conio.hにあることを気にしない場合、ここにポインタがあります。

#include <stdio.h> 
#include <conio.h> 

#define KB_UP 72 
#define KB_DOWN 80 
#define KB_LEFT 75 
#define KB_RIGHT 77 
#define KB_ESCAPE 27 


int main() 
{ 
    int KB_code=0; 

    while(KB_code != KB_ESCAPE) 
    { 
    if (kbhit()) 
     { 
      KB_code = getch(); 
      printf("KB_code = %i \n",KB_code); 

      switch (KB_code) 
      { 
       case KB_LEFT: 
          //Do something 
       break; 

       case KB_RIGHT: 
          //Do something      
       break; 

       case KB_UP: 
          //Do something      
       break; 

       case KB_DOWN: 
          //Do something      
       break; 

      }   

     } 
    } 

    return 0; 
} 
関連する問題