如何在 C++ 中暫停程式

Jinku Hu 2023年10月12日
  1. 使用 getc() 函式來暫停程式
  2. 使用 std::cin::get() 方法來暫停程式
  3. 使用 getchar() 函式來暫停程式的執行
如何在 C++ 中暫停程式

本文將介紹幾種在 C++ 中暫停程式的方法。

使用 getc() 函式來暫停程式

getc() 函式來自 C 標準輸入輸出庫,它從給定的輸入流中讀取下一個字元。輸入流的型別為 FILE*,該函式期望該流會被開啟。在幾乎所有的 Unix 系統中,在程式啟動過程中,有 3 個標準的檔案流被開啟-即:stdinstdoutstderr。在下面的例子中,我們傳遞 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,該方法從輸入流中提取引數指定的字元。在這種情況下,我們是讀取一個字元,然後將控制權返回給正在執行的程式。

#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 函式呼叫重新實現同樣的功能。getchar 相當於呼叫 getc(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;
}
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook