1. ホーム
  2. c++

[解決済み】C++プログラムでのコンソールの一時停止

2022-01-22 11:52:28

質問

C++プログラムでコンソールを一時停止するには、どの方法が一番良いですか?

  1. 使用 cin.get()
  2. または system("pause")
  3. のようなCの関数を使用したり getch() または getchar() ?

を使用するのは本当ですか? system("pause") は、移植性のないコードになり、UNIXでは動作しないのですか?

コンソールを一時停止するには、cin.get()を使うのが良いのでしょうか?

どのように解決するのですか?

最適な方法があるかもしれません(ポータブルな cin.get() ), しかし 良い 方法は存在しない . 自分の仕事を終えたプログラムは終了し、その資源をコンピュータに還元すべきなのです。

そして、そうです。 system() は移植不可能なコードにつながります。パラメータはあなたのプロセスを所有するシェルに渡されるからです。

ソースコードに一時停止コードがあると、遅かれ早かれ面倒なことになります。

  • チェックイン前に一時停止コードを削除し忘れる人がいる
    • これで、働いている仲間は皆、なぜアプリが閉じないのか不思議に思わなければならなくなりました。
    • バージョン履歴が汚染される
  • #define は地獄
  • コンソールからあなたのコードを実行する人に迷惑がかかります。
  • プログラムがシェルのパイプラインの一部である場合、プログラムが終了しなければ、シェルスクリプトやパイプラインも終了しないので、4倍厄介です。

代わりに、あなたのIDEを探ってみてください。おそらく、実行後にコンソールウィンドウを閉じないようにするオプションがあるはずです。そうでない場合は、常にコンソールウィンドウを近くに開いておくことが、お金を出す価値のある開発者であるあなたにとって大きな正当化理由となるのです。

あるいは、これをプログラムのオプションにすることもできますが、個人的には、オプションのあるプログラムを見たことがありません --keep-alive-when-dead .

物語のモラル これはユーザーの問題であり、プログラムの問題ではありません。コードを汚してはいけません。