Heim > Backend-Entwicklung > C++ > Warum ist „cin.ignore()' für die korrekte String-Eingabe nach der numerischen Eingabe in C von entscheidender Bedeutung?

Warum ist „cin.ignore()' für die korrekte String-Eingabe nach der numerischen Eingabe in C von entscheidender Bedeutung?

Susan Sarandon
Freigeben: 2024-12-10 18:16:12
Original
562 Leute haben es durchsucht

Why Is `cin.ignore()` Crucial for Correct String Input After Numerical Input in C  ?

Das Rätsel von cin.ignore() in C lösen

Bei der Interaktion mit Benutzern in C-Programmen können unerwartete Szenarien wie das Überspringen von String-Eingaben auftreten entstehen. Der scheinbar harmlose cin.ignore()-Aufruf ist der Schlüssel zur Lösung solch verwirrender Probleme.

Warum cin.ignore() wichtig ist

Wenn der Benutzer eine Zahl eingibt gefolgt von einer Zeichenfolge. Durch Drücken der Eingabetaste wird ein Zeilenumbruchzeichen ('n') in den Eingabepuffer eingefügt. Anschließend cin >> num; verbraucht die Zahl, belässt aber das „n“-Zeichen im Puffer. Wenn cin.ignore() fehlt, wird cin >> getline(cin, mystr); liest versehentlich das Zeichen „n“ anstelle der Zeichenfolgeneingabe.

Die Funktion cin.ignore() löst dieses Problem, indem sie eine bestimmte Anzahl von Zeichen (in unserem Beispiel 256) ignoriert oder bis sie auf ein Trennzeichen (' n' in diesem Fall).

Vorhersage des Bedarfs an cin.ignore()

Um vorherzusagen, wann cin.ignore() erforderlich ist, müssen Sie das Potenzial für übrig gebliebene Zeichen im Eingabepuffer verstehen. Zu den Situationen, in denen es wichtig wird, gehören:

  • Nach dem Lesen von Zahlen (z. B. cin >> num;)
  • Wenn die nachfolgende Eingabe eine Zeichenfolge ist (z. B. cin >> getline(cin, mystr);)
  • Wenn die Eingabe Zeichen ohne Trennzeichen enthält, die unbeabsichtigt sein könnten reabsorbed

Beispiel: Eintauchen in den Code

Betrachten Sie das bereitgestellte C-Programm:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    double num;
    string mystr;

    cout << "Please enter a number: " << endl;
    cin >> num;
    cout << "Your number is: " << num << endl;
    cin.ignore(256, '\n'); // Ignore any remaining characters
    cout << "Please enter your name: \n";
    getline (cin, mystr);
    cout << "So your name is " << mystr << "? \n";
    cout << "Have a nice day. \n";

}
Nach dem Login kopieren

Einfügen von cin.ignore() Anruf nach cin >> num; stellt sicher, dass das „n“-Zeichen ignoriert wird, sodass das nachfolgende cin >> getline(cin, mystr); um die String-Eingabe korrekt zu lesen.

Das obige ist der detaillierte Inhalt vonWarum ist „cin.ignore()' für die korrekte String-Eingabe nach der numerischen Eingabe in C von entscheidender Bedeutung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage