C++ でプログラムを一時停止する方法

  1. プログラムを一時停止するには getc() 関数を使う
  2. プログラムを一時停止するには std::cin::get() メソッドを用いる
  3. プログラムの一時停止には getchar() 関数を用いる

この記事では、C++ でプログラムを一時停止する方法をいくつか説明します。

プログラムを一時停止するには getc() 関数を使う

関数 getc() は C 標準入出力ライブラリのものであり、与えられた入力ストリームから次の文字を読み込む。入力ストリームは FILE* 型であり、この関数はストリームが開かれることを期待する。ほとんどすべての Unix システムでは、プログラムの起動時に 3つの標準ファイルストリームがオープンされる。すなわち、stdin, stdout および stderr である。以下の例では、stdin を引数に渡して、ユーザがプログラムの実行を続けるのを待つために、コンソール入力に対応する。

#include <iostream>
#include <thread>
#include <chrono>

using std::cout;
using std::endl;
using std::copy;
using std::this_thread::sleep_for;
using namespace std::chrono_literals;

int main()
{
    int flag;
    cout << "Program is paused !\n" <<
        "Press Enter to continue\n";

    // pause the program until user input
    flag = getc(stdin);

    cout << "\nContinuing .";
    sleep_for(300ms);
    cout << ".";
    cout << ".";
    cout << ".";
    cout << "\nProgram finished with success code!";

    return EXIT_SUCCESS;
}

出力:

Program is paused !
Press Enter to continue

Continuing ....
Program finished with success code!

プログラムを一時停止するには std::cin::get() メソッドを用いる

プログラムを一時停止するもう一つの方法は、std::cin 組み込みのメソッド get を呼び出すことであり、パラメータで指定された入力ストリームから文字を抽出する。この場合、1 文字を読み込んで実行中のプログラムに制御を返すだけです。

#include <iostream>
#include <vector>
#include <thread>
#include <chrono>

using std::cout; using std::cin;
using std::endl; using std::vector;
using std::copy;
using std::this_thread::sleep_for;
using namespace std::chrono_literals;

int main()
{
    int flag;
    cout << "Program is paused !\n" <<
        "Press Enter to continue\n";

    // pause the program until user input
    flag = cin.get();

    cout << "\nContinuing .";
    sleep_for(300ms);
    cout << ".";
    cout << ".";
    cout << ".";
    cout << "\nProgram finished with success code!";

    return EXIT_SUCCESS;
}

プログラムの一時停止には getchar() 関数を用いる

別の方法として、getchar 関数呼び出しで同じ機能を再実装することもできます。getchargetc(stdin) と同等の呼び出しであり、コンソール入力ストリームから次の文字を読み出す。

どちらの関数も EOF を返す可能性があることに注意してください。これはファイルの終端に達したこと、つまり読み込める文字がないことを示しています。例外的な制御フローや返されたエラーコードを処理する責任はプログラマにある。

#include <iostream>
#include <vector>
#include <thread>
#include <chrono>

using std::cout; using std::cin;
using std::endl; using std::vector;
using std::copy;
using std::this_thread::sleep_for;
using namespace std::chrono_literals;

int main()
{
    int flag;
    cout << "Program is paused !\n" <<
        "Press Enter to continue\n";

    // pause the program until user input
    flag = getchar();

    cout << "\nContinuing .";
    sleep_for(300ms);
    cout << ".";
    cout << ".";
    cout << ".";
    cout << "\nProgram finished with success code!";

    return EXIT_SUCCESS;
}
comments powered by Disqus