Verwendung der ignore()-Funktion in C++
-
Verwenden Sie die Funktion
ignore()
, um unerwünschte Benutzereingaben der Befehlszeile zu verwerfen -
Verwendung der Funktion
ignore
zum Extrahieren der Initialen der Benutzereingabe in C++
Dieser Artikel erklärt verschiedene Methoden, wie man die Funktion ignore()
in C++ verwenden kann.
Verwenden Sie die Funktion ignore()
, um unerwünschte Benutzereingaben der Befehlszeile zu verwerfen
Die Funktion ignore()
ist eine Mitgliedsfunktion von std::basic_istream
und wird von verschiedenen Eingabestromklassen geerbt. Die Funktion verwirft die Zeichen im Stream bis einschließlich des angegebenen Begrenzers und extrahiert dann den Rest des Streams.
Das erste Argument ist die Anzahl der zu extrahierenden Zeichen, das zweite das Begrenzungszeichen.
Das folgende Beispiel zeigt, wie die Funktion ignore
auf dem Objekt cin
aufgerufen wird, um nur 3 Zahlen zu speichern und alle anderen Benutzereingaben zu verwerfen. Beachten Sie, dass wir numeric_limits<std::streamsize>::max()
als erstes Argument der Funktion ignore
verwenden, um den Sonderfall zu erzwingen und den Parameter Anzahl der Zeichen zu deaktivieren.
#include <fstream>
#include <iostream>
#include <limits>
#include <sstream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::istringstream;
using std::numeric_limits;
using std::string;
int main() {
while (true) {
int i1, i2, i3;
cout << "Type space separated numbers: " << endl;
cin >> i1 >> i2 >> i3;
if (i1 == 0) exit(EXIT_SUCCESS);
cin.ignore(numeric_limits<std::streamsize>::max(), '\n');
cout << i1 << "; " << i2 << "; " << i3 << endl;
}
return EXIT_SUCCESS;
}
Ausgabe:
Type space separated numbers:
238 389 090 2232 89
238; 389; 90
Verwendung der Funktion ignore
zum Extrahieren der Initialen der Benutzereingabe in C++
Eine gängige Art, die Funktion ignore
zu verwenden, besteht darin, den Eingabestrom bis zum gewünschten Begrenzungszeichen zu durchsuchen und nur die benötigten Zeichen zu extrahieren.
Im folgenden Codebeispiel wird die Benutzereingabe so geparst, dass nur die Initialen der durch Leerzeichen getrennten Zeichenketten extrahiert werden. Beachten Sie, dass wir cin.get
zweimal verwenden, um ein einzelnes Zeichen aus dem Strom zu extrahieren, aber die Anweisung cin.ignore
dazwischen stellt sicher, dass jedes Zeichen vor und einschließlich des nächsten Leerzeichens verworfen wird.
#include <fstream>
#include <iostream>
#include <limits>
#include <sstream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::numeric_limits;
using std::string;
using std::vector;
int main() {
char name, surname;
cout << "Type your name and surname: " << endl;
name = cin.get();
cin.ignore(numeric_limits<std::streamsize>::max(), ' ');
surname = cin.get();
cout << "Your initials are: " << name << surname << endl;
return EXIT_SUCCESS;
}
Ausgabe:
Type your name and surname:
Tim Cook
Your initials are: TM
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