2010-11-18 6 views
2

私はいくつかの読書をしています。私はgetch()を使ってキーストロークを得ることができます。私が見たことは、これは悪い習慣とみなされますが、私は矛盾する意見を見ました。クラス用のコンソールアプリケーションを作成していて、押されている矢印キーに基づいて画面上でマーカー(*)を移動できるようにしたいと考えています。 getch()はこれを行う正しい方法ですか、それをキャプチャするより良い方法があります。私は彼らが矢印を押すことができるように、入力するか何かを押す必要がないようにします。私はコードを具体的に必要としません、私はちょうど私がgetch()を避けるべきかどうかを知りたいのですが、もしそうなら、このタイプのアイデアにはどんな機能がありますか?C++のキーストロークのキャプチャ

+2

どのオペレーティングシステムですか? –

答えて

1

getch()は、CまたはC++のいずれかで、標準的な機能ではありません。それはTurbo Cのようないくつかの古くなったコンパイラで見つけられ、cursesなどの一般的に使用されているライブラリでも定義されていますが、いずれにせよC++ではなくCの関数です。 C++の場合は、標準のC++ I/Oを使用してください。何らかの理由でこれを行うことができない場合は、最も携帯性の高いオプションを選択してください。呪い

+0

には、入力時にキーストロークをキャプチャするための標準的な方法がありますか?あるいは、C++は常に入力をバッファに入れる必要がありますか? – Bear

+0

@bear:いいえ標準的なC++にそのような方法はありません – smerlin

+0

私は、いずれの解決策もOS特有のものか、cursesやncursesのようなライブラリを必要とすると思います。 –

1

非正規モードで端末から読み込みたいとします。 tcsetattr()を使用して、ICANONフラグをオフにします。

+0

私が感謝のために探していたもの! –

0

動作する場合はgetch()を使用してください。何故なの? Windowsでは

関連する問題