Warten auf Benutzereingaben in C++
-
Verwenden Sie die Methode
cin.get()
, um auf Benutzereingaben zu warten -
Verwenden Sie die Funktion
getchar
, um auf Benutzereingaben zu warten -
Verwenden Sie die Funktion
getc
, um auf Benutzereingaben zu warten -
Vermeiden Sie die Verwendung von
system("pause")
, um auf Benutzereingaben zu warten
In diesem Artikel werden C++-Methoden vorgestellt, die auf Benutzereingaben warten. Beachten Sie, dass das folgende Tutorial davon ausgeht, dass der Inhalt der Benutzereingaben für die Programmausführung irrelevant ist.
Verwenden Sie die Methode cin.get()
, um auf Benutzereingaben zu warten
get()
ist eine std:cin
Memberfunktion, die fast wie ein >>
Eingabeoperator arbeitet, der Zeichen aus dem Stream extrahiert. In diesem Fall, wenn wir nicht an der Verarbeitung der Benutzereingabe interessiert sind und nur eine Wartefunktion
implementieren müssen, können wir die get
-Funktion ohne Argumente aufrufen. Beachten Sie jedoch, daß diese Funktion zurückkehrt, wenn die Eingabetaste gedrückt wird.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
flag = cin.get();
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Ausgabe:
w; x; y; z;
Done !
Verwenden Sie die Funktion getchar
, um auf Benutzereingaben zu warten
Die Funktion getchar
ist die C-Standardbibliotheksfunktion zum Lesen eines einzelnen Zeichens aus dem Eingabestrom (stdin
). Wie die vorherige erwartet auch diese Methode die Rückkehr eines Zeichens für eine neue Zeile (d.h. das Drücken der Eingabetaste). getchar
gibt eof
zurück, wenn ein Fehler auftritt oder wenn das Ende des Streams erreicht ist.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
flag = getchar();
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Verwenden Sie die Funktion getc
, um auf Benutzereingaben zu warten
Als Alternative könnten wir das obige Beispiel durch die getc
-Funktion ersetzen. getc
wird mit dem Argument DATEI *Strom
übergeben, um aus einem beliebigen Eingabestrom zu lesen, aber in diesem Fall übergeben wir stdin
, das ein Standard-Eingabestrom ist, der üblicherweise mit der Terminal-Eingabe assoziiert wird. Diese Funktion kehrt auch zurück, wenn die Eingabetaste gedrückt wird.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
flag = getchar();
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Vermeiden Sie die Verwendung von system("pause")
, um auf Benutzereingaben zu warten
Die Funktion system
wird verwendet, um Shell-Befehle auszuführen, und der Name des Befehls wird als String-Literal übergeben. Wenn also eine pause
als Argument übergeben wird, versucht sie, den entsprechenden Befehl auszuführen, der nur auf Windows-Plattformen verfügbar ist. Es ist besser, eine benutzerdefinierte Wartefunktion mit den oben aufgeführten Methoden zu implementieren, als eine nicht portierbare Art der System("Pause")
zu verwenden.
#include <iostream>
#include <vector>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> arr = {'w', 'x', 'y', 'z'};
int flag;
system("pause");
for (auto const& value : arr) cout << value << "; ";
cout << "\nDone !" << endl;
return EXIT_SUCCESS;
}
Ausgabe:
sh: 1: pause: not found
w; x; y; z;
Done !
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