コマンドプロンプトプログラムをsystem("pause")
のように待機させ、特定のキーを受け入れた後にのみ実行を続ける機能はありますか?C++ - 特定のキーが押されるまでプログラムを一時停止する
答えて
改行文字を待っている場合は、それを行うための簡単でポータブルな方法があります。ちょうどgetline
を使用してください。
改行を最初に受け取らずに他の文字を受け取りたい場合、物事は移植性が低くなります。 Unixシステムでは、端末を「rawモード」に設定する必要があります。 Georgeさんのコメントによれば、ncursesはこれを行う簡単な方法です。さらに、端末の特定の場所に物を描き、任意のキーを受け取るなどの便利な機能を提供します。
Windowsでは、 console interface。これは、もちろん、Windowsの外部では使用できません。
Neil Butterworthのコメントとして、PDCursesと呼ばれるWindows用のcursesもあります。 UnixとWindowsの両方で動作するソフトウェアを作成する必要がある場合、それは追求するための良いオプションです。
cursesはWindowsでも利用できます - http://pdcurses.sourceforge.net/ –
getlineとncursesがうまく動作しない場合は、常にconio.hとgetch()があります。この回答で説明されているようにこれにいくつかの問題があります。Why can't I find <conio.h> on Linux?
幸運。
コンソールのインターフェイスgetche()関数は、さらなる実行の前にキーストロークを待つでしょう。
あなたは私の質問を誤解しているようです。私が知りたいのは、getch()と似た関数があるが、特定のキーに対してのみ機能するということだ。 – Twilight053
Windowsの場合は、Microsoftランタイムライブラリの一部であるkbhit()を使用できます。あなたは、Linuxを使っている場合は、手順をコンパイルするため
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);
if(ch != EOF)
{
ungetc(ch, stdin);
return 1;
}
return 0;
}
をkbhitを実装することができます
gcc -o kbhit kbhit.c
./kbhit
で実行すると、それはキー入力を求めるプロンプトが表示されます、そしてときに終了しますキーを押します(Enterキーまたは印刷可能なキーに限定されません)。
(ガットインターネット上で - あなたは、コードを変更し、Enterキーのために\ nのように、特定のchの値を使用することができます)(
- 1. キーが押されるまでプログラムを一時停止する
- 2. Linux - キーが押されるまでループを一時停止する
- 3. 一時停止ボタンが押されたときにプログラムの実行を一時停止する方法
- 4. C#一定時間後にプログラムを停止する方法は?
- 5. ボタンを押すまでプログラムの実行を一時停止する方法は?
- 6. 一時停止プログラムの応答が得られるまで
- 7. ExecutorServiceから特定のスレッドを停止/一時停止できますか?
- 8. C#でメインプロセスを一時停止する
- 9. C# - キーが押されたときにループを停止する方法?
- 10. Cでのプログラム完了時に画面を一時停止
- 11. プログラムを終了するまでプロセスが一時停止中
- 12. C#プログラムの実行を一時停止する
- 13. 特定のCMTimeでAVPlayerを一時停止する
- 14. MPRemoteCommandCenter:一時停止ボタンを押すとUIが消える
- 15. キーを押してスレッドを一時停止して再開する
- 16. 入力を一時停止するC++
- 17. バインド一時停止し、私は一時停止を割り当て、別のボタンに一時停止することができAHKで同じキー
- 18. 一時停止/一時停止後に一時停止したシーン(停止していない状態)でSKActionを実行しないようにするには、一時停止/一時停止後にノードのテクスチャは変更されません。
- 19. CSSアニメーションを特定の時間の一定時間後に一時停止させます。
- 20. C#エレベーターシステム、一時停止
- 21. 変数が変更されるまで一時停止
- 22. プログラムを起動して一時停止するための切り替えキー
- 23. 機能でオーディオを一時停止または一時停止する
- 24. Javaのスイングタイマーとプログラムの一時停止?
- 25. GUI用Matlabプログラムの一時停止
- 26. 一時停止ボタンはAVAudioPlayerを一時停止するのではなく停止しています。
- 27. ボタンを押すまでJavascriptの実行を一時停止する
- 28. 別のボタンを押しながらoneClickListenerを一時停止
- 29. UIAlertViewボタンが押されるまでコード実行を一時停止しますか?
- 30. プログラムでWindowsサービスアプリケーションで一時停止を作成する方法
あなたは[ncursesベース]でご覧になる場合がありますhttps://www.gnu.org/ソフトウェア/ ncurses /) – George
一度に1行ずつコードをステップ実行するような意味ですか? – ArmenB
C++標準ライブラリにはありません。 –