Wie kann ein Programm in C++ angehalten werden
-
Verwenden Sie die Funktion
getc()
, um das Programm zu pausieren -
Verwenden Sie die Methode
std::cin::get()
, um das Programm anzuhalten -
Verwenden Sie die Funktion
getchar()
, um das Programm anzuhalten
In diesem Artikel werden verschiedene Methoden erläutert, wie ein Programm in C++ angehalten werden kann.
Verwenden Sie die Funktion getc()
, um das Programm zu pausieren
Die Funktion getc()
stammt aus der C-Standard-Eingabe-Ausgabe-Bibliothek, und sie liest das nächste Zeichen aus dem gegebenen Eingabestrom. Der Eingabestrom ist vom Typ FILE*
, und die Funktion erwartet, dass der Strom geöffnet wird. Auf fast allen Unix-Systemen werden während des Programmstarts 3 Standarddateistreams geöffnet - nämlich stdin
, stdout
und stderr
. Im folgenden Beispiel übergeben wir stdin
als Argument, das einer Konsolen-Eingabe entspricht, um auf einen Benutzer zu warten, der die Programmausführung fortsetzt.
#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;
}
Ausgabe:
Program is paused !
Press Enter to continue
Continuing ....
Program finished with success code!
Verwenden Sie die Methode std::cin::get()
, um das Programm anzuhalten
Eine andere Methode, ein Programm anzuhalten, ist der Aufruf der in std::cin
eingebauten Methode get
, die Zeichen aus dem Eingabestrom extrahiert, wie durch Parameter angegeben. In diesem Fall lesen wir einfach ein einzelnes Zeichen und geben die Kontrolle an das ausführende Programm zurück.
#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;
}
Verwenden Sie die Funktion getchar()
, um das Programm anzuhalten
Als Alternative kann man die gleiche Funktionalität mit dem Funktionsaufruf getchar
reimplementieren. getchar
ist der äquivalente Aufruf zu getc(stdin)
, der das nächste Zeichen aus dem Eingabestrom der Konsole liest.
Beachten Sie, dass beide Funktionen EOF
zurückgeben können, was anzeigt, dass das Ende der Datei erreicht ist, d.h. dass keine Zeichen zum Lesen verfügbar sind. Der Programmierer ist für die Behandlung jedes außergewöhnlichen Kontrollflusses und der zurückgegebenen Fehlercodes verantwortlich.
#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;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook