1

重複の可能性:
C++ コンソール アプリケーションがすぐに終了しないようにする方法は?

私はC++の初心者です。チュートリアルに従って、単純なコマンド (cout ans など) の実行が終了すると、私のプログラムは自己終了しました。それを回避する get.cin() 関数を発見しました。ただし、「cin」コマンドを使用して変数を挿入すると、プログラムは入力を受け取って作業を実行した直後に自己終了します。それを回避する方法はありますか?どうもありがとう!

4

5 に答える 5

1

使用しているにもかかわらず、プログラムが入力を受け取ると終了する理由は、入力を読み取るstd::cin.get()たびcinに、がらくたが残される可能性があるためです。に電話std::cin.get()すると、その迷惑メールが届きます。

あなたがしなければならないことは、読み取るものがなく、新しい入力を待つ必要がcinあるような、望ましくないデータを取り除くことです。std::cin.get()

...
std::cin.clear();
std::cin.get();
return 0; 
于 2012-09-01T21:32:05.750 に答える
1

プログラムは「自分自身を殺す」ことはありません。実行すべきことをすべて実行し終えたとき (つまり、 から戻ったとき) に終了ますmain

プログラムの出力を確認できるように作業環境をセットアップするのは、ユーザー次第です。たとえば、Windows を使用している場合は、独自のコマンド ライン ( run cmd) を開き、そこからプログラムを実行できます。または、プログラムの終了後にターミナル ウィンドウを閉じないように IDE に指示します。

于 2012-09-01T21:33:07.650 に答える
1

プログラムは実行後に自分自身を強制終了するのではなく、終了するだけです。

簡単な例:

#include <iostream>
int main( int argc, const char* argv[] )
{
    std::cout << "Hello, World" << std::endl;
    return 0; // End of execution
}

その例では、コードのロジックがそうしているため、小さなウィンドウが開いてから非常に速く閉じますが、次の例では:

#include <iostream>
int main( int argc, const char* argv[])
{
     std::cout <<"Hello, World!" << std::endl;
     std::cin.get();
     return 0;
}

アプリケーションは、Enter キーの [Return キー] を押して終了するまで画面に表示されたままです。

Windows オペレーティング システムを使用している場合は、次の例を検討してください。

#include <iostream>
int main( int argc, const char* argv[])
{
     std::cout << "Hello, World!" << std::endl;
     system("PAUSE");
     return 0;
}

system("PAUSE")は Windows のみで動作し、他のオペレーティング システムでは動作しないことに注意してください。

ここでもう1つ言及する価値があるのは、これら以外にも使用する方法はたくさんありますが、最も一般的な方法を書きました。

于 2012-09-01T22:12:03.780 に答える
0

一部のウィンドウ システムでは、プログラムの実行時にコンソール ウィンドウが作成されます。プログラムが終了すると、このコンソール ウィンドウは消えます。

初心者には常に「一時停止」パターンをお勧めします。

cout << "Paused. Press ENTER to continue.\n");
cin.ignore(10000, '\n'); // Ignore until 100000 characters are entered or a newline is entered.

時々、私はこれを関数にします:

void Pause(void)
{
    cout << "Paused. Press ENTER to continue.\n");
    cin.ignore(10000, '\n'); // Ignore until 100000 characters are entered or a newline is entered.
}

お役に立てれば、

于 2012-09-01T21:54:15.740 に答える
0

std::cin.get()うまく機能し、その使用法は非常に簡単ですが、ユーザーがリターンを押すことを期待しています. 以前は を使用してプログラムを終了していESCたので、うまくいかないので、これを使用します

#ifdef _WIN32
std::system( "pause" );
#else
std::system( "read -n1 -r -p \"Press any key to continue...\"" );
#endif

「続行するには任意のキーを押してください...」と出力し、任意のキーを押して実行を続行するので、私の素敵なESC

于 2012-09-01T22:06:09.860 に答える