C++

コンソール実行時にすぐに画面が閉じるときの対処法(C++)

動機

久々にC++を触る機会があり、デバッグの際に止まらずに終了してしまう、よくあるトラブルの対処法を忘れていたので、備忘録として記載しておきます。
追記:2018/04/18 14:19

環境

Visual Studio Community 2017

魔法の1行

以下の1行をストップしたい場所に入れ、stdio.hをインクルードするだけです。
(初歩的なプログラムの場合、returnの上に入れるのが普通です)

hoge.cpp
getchar()

このコマンドは本来一文字読み取る関数ですが、一度入力待ちになり、何かキーを押すと再度動くので、擬似的なブレークポイントとして機能します。

プログラム例

16進数で入力された数字を10進数で表示する簡単なコードです。

main.cpp
#include <stdio.h>

int main() {
    int variable;
    variable = 0x12345678;

    printf("%d", variable);

    getchar(); // 一時停止
    return 0;

}

上手くいけば、以下のように表示され、何かキーを押すと終了するようになると思います。

305419896

追記:もう一つの魔法の1行(?)

別解として、以下があります。(y_itamoto様コメントありがとうございます。)

hoge.cpp
system("pause");

これは1行で「続行するには…」を表示してくれる優秀ちゃんです。
ただ、正確には1行ではなく、

hoge.cpp
#include <stdlib.h>

を先頭に追加する必要があります。
蛇足ですが、僕も最初にこれを発見したのですがエラーを吐いてしまい(その時インクルード部分のスペリングミスとは気づかなかった)、先程紹介した方法に行き着くことになりました。
多分コメントで指摘されるまで気づくことなかったかも…

プログラム例 その2

main.cpp
#include <stdio.h>
#include <stdlib.h>

int main() {
    int variable;
    variable = 0x12345678;

    printf("%d\n", variable);

    system("pause"); //一時停止
    return 0;

}

上述したプログラムと同じ動作をするはずです。

最後に

このコマンドを書いた後に、「別にブレークポイントでよくね?」って思った