Verwendung der ignore()-Funktion in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion ignore(), um unerwünschte Benutzereingaben der Befehlszeile zu verwerfen
  2. Verwendung der Funktion ignore zum Extrahieren der Initialen der Benutzereingabe in C++
Verwendung der ignore()-Funktion 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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - C++ IO