2

私はいくつかの読書をしてきましたが、getch()を使用してキーストロークを取得できることがわかりました。私が見たのは、これは悪い習慣と見なされているということですが、私は相反する意見を見てきました。クラス用のコンソールアプリケーションを作成していますが、矢印キーが押されていることに基づいて、画面上でマーカー(*)を移動できるようにしたいと考えています。getch()はこれを実行する正しい方法ですか、それともそれをキャプチャするためのより良い方法がありますか。Enterキーなどを押す必要はなく、矢印を押すだけでよいようにします。特にコードは必要ありません。getch()を避けるべきかどうか、もしそうなら、このタイプのアイデアにはどの関数があるのか​​を知りたいだけです。

4

4 に答える 4

1

getch()C または C++ の標準関数ではありません。これは、 Turbo Cなどの一部の廃止されたコンパイラに見られ、cursesなどの一般的に使用される特定のライブラリでも定義されていますが、いずれにしても C++ ではなく C 関数です。C++ の場合は、おそらく標準の C++ I/O に固執する必要があります。何らかの理由でこれを行うことができない場合は、curses などの最も移植性の高いオプションを選択してください。

于 2010-11-18T21:06:30.977 に答える
1

非標準モードで端末から読み取りたい。ICANON フラグをオフにするには、tcsetattr() を使用します。

于 2010-11-18T21:12:58.333 に答える
0

機能する場合は getch() を使用してください。なぜだめですか?

于 2010-11-18T21:15:07.077 に答える
0

Windows では、ncurses と互換性のあるpdcurses: http://pdcurses.sourceforge.net/を使用できます。

于 2010-11-19T01:38:14.267 に答える