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:
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"; }
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!