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

胡金庫 2023年10月12日
  1. プログラムを一時停止するには getc() 関数を使用する
  2. プログラムを一時停止するには std::cin::get() メソッドを用いる
  3. プログラムの一時停止には getchar() 関数を用いる
C++ でプログラムを一時停止する方法

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

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

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

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

using std::copy;
using std::cout;
using std::endl;
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 <chrono>
#include <iostream>
#include <thread>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
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 <chrono>
#include <iostream>
#include <thread>
#include <vector>

using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
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;
}
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook