Heim >Backend-Entwicklung >C++ >Was ist der Hauptunterschied zwischen „std::cin' und „std::cin.getline()' in C?

Was ist der Hauptunterschied zwischen „std::cin' und „std::cin.getline()' in C?

DDD
DDDOriginal
2024-12-08 04:36:13219Durchsuche

What's the Key Difference Between `std::cin` and `std::cin.getline()` in C  ?

Die Unterschiede zwischen std::cin.getline() und std::cin verstehen

Beim Arbeiten mit Eingabe und Ausgabe in C , Es ist wichtig, die Nuancen zwischen std::cin.getline() und std::cin zu verstehen. Obwohl beide zum Standard-Eingabeobjekt std::cin gehören, dienen sie unterschiedlichen Zwecken und verarbeiten Eingaben unterschiedlich.

std::cin.getline()

Lassen Sie uns näher darauf eingehen std::cin.getline(). Der Namespace std:: beherbergt die umfangreiche Sammlung von Typen, Funktionen und Objekten der Standardbibliothek. std::cin ist ein solches Objekt, das die Standardzeicheneingabe darstellt. Es bietet Methoden und Funktionen zum Extrahieren von Zeichen aus der Standardeingabe.

std::cin.getline() ist eine Methode von std::cin, die eine Zeichenzeile vom Objekt links davon abruft (hier std ::cin). Es liest weiterhin Zeichen, bis es auf ein Zeilenumbruchzeichen (n) stößt, die maximal angegebene Anzahl von Zeichen erreicht oder keine Eingabe mehr vorhanden ist.

std::cin vs. std::cin.getline( )

Der Hauptunterschied zwischen std::cin und std::cin.getline() liegt in der Art und Weise, wie sie mit Leerzeichen und Zeilenumbrüchen umgehen Zeichen:

  • std::cin: Standardmäßig überspringt std::cin führende Leerzeichen (Leerzeichen, Tabulatoren usw.) und stoppt das Lesen beim ersten Leerzeichen, auf das es trifft .
  • std::cin.getline(): Im Gegensatz dazu liest std::cin.getline() und Schließt alle Zeichen ein, bis ein Zeilenumbruchzeichen (n) gefunden wird. Dies bedeutet, dass ganze Textzeilen, einschließlich Leerzeichen, effektiv gelesen werden.

Beispielverwendung

Das Verständnis dieser Unterscheidungen ist wichtig, wenn Sie mit Zeichenfolgen und Eingaben arbeiten, die dies möglicherweise tun Leerzeichen oder Zeilenumbrüche enthalten. Zum Beispiel:

string name;
int age;

// Read a single word from std::cin
std::cin >> name; // Suppose John

// Read the next line of input
std::string line;
std::getline(std::cin, line); // Suppose "is 25 years old"

// Extract the age from the line
age = std::stoi(line.substr(line.find("is") + 3, line.find("years") - 5)); // Extract "25"

In diesem Beispiel verwenden wir std::cin, um ein einzelnes Wort (Name) zu lesen, und verwenden dann std::cin.getline(), um die gesamte folgende Zeile zu lesen. Beachten Sie, dass, wenn wir std::cin zum Lesen der Zeile mit dem Alter verwendet hätten, nur „25“ ohne den umgebenden Text extrahiert worden wäre.

Fazit

Wenn Sie mit Eingaben arbeiten, die Leerzeichen oder Zeilenumbrüche enthalten, ist es unerlässlich, den Unterschied zwischen std::cin.getline() und std::cin zu verstehen. Durch das Verständnis ihrer unterschiedlichen Verhaltensweisen können Entwickler bestimmte Teile der Eingabe effektiv abrufen und potenzielle Unklarheiten bei der Datenverarbeitung vermeiden.

Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen „std::cin' und „std::cin.getline()' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn