web-dev-qa-db-ja.com

C ++でのコンソールの一時停止?

C#では、文字が入力されるのをコンソールに待機させることができます(これは、プログラムが終了する前にコンソールの最後の出力を確認できるのに役立ちます)。 C++の初心者として、私は同等のものが何であるかよくわかりません。あるの?

23
RCIX

最も簡単な方法は単純です:

std::cin.get();

その前に「続行するには任意のキーを押してください...」のようなものを印刷できます。一部の人々はあなたについて教えてくれます

system("pause");

しかし、使用しないでください。ポータブルではありません。

35
reko_t
_#include <stdio.h>
// ...
getchar();
_

この関数は、1回のキー入力を待機し、その(整数)値を返します。

たとえば、System("pause")と同じ機能を持っていますが、 "pause.exe"(潜在的なセキュリティ全体であるbtw)は必要ありません:

_void pause()
{
  std::cout << std::endl << "Press any key to continue...";
  getchar();
}
_
5
Mephane

標準には何もありませんし、クロスプラットフォームにも何もありません。通常の方法は、<Enter>が押されるのを待ってから、結果を破棄することです。

間違った解決策は、system("pause")を使用することです。これにより、セキュリティホール(ディレクトリ内の悪意のあるpause.exe!)が作成され、プラットフォームに依存しません(一時停止はWindows/DOSにのみ存在します)。

より簡単な解決策があります。

_void myPause() {
    printf("Press any key to continue . . .");
    getchar();
}
_

これは、POSIX準拠のgetchar()を使用します( this を参照)。この関数は次のように使用できます。

_int main() {
    ...
    myPause();
}
_

これにより、コンソールが点滅して終了するのを効果的に防ぎます。

1
Adrian Zhang