Gute Eingabevalidierungsschleife mit cin in C
Als Anfänger in C ist das Verständnis effektiver Eingabevalidierungstechniken von entscheidender Bedeutung. Dies ist besonders wichtig, wenn der Standard-Eingabestream cin verwendet wird. In diesem Artikel untersuchen wir einen gängigen schleifenbasierten Ansatz zur Validierung von Benutzereingaben und heben einen alternativen Ansatz hervor, der oft als sauberer und prägnanter angesehen wird.
Ursprüngliche Schleife:
Die von Ihnen erstellte Eingabevalidierungsschleife verwendet eine Do-While-Schleife, um den Benutzer wiederholt zur Eingabe aufzufordern und zu prüfen Fehler:
int taxableIncome; int error; do { error = 0; cout << "Please enter in your taxable income: "; cin >> taxableIncome; if (cin.fail()) { cout << "Please enter a valid integer" << endl; error = 1; cin.clear(); cin.ignore(80, '\n'); } } while (error == 1);
Alternativer Ansatz:
Ein alternativer Ansatz besteht darin, eine for-Schleife zu verwenden und den Cin-Eingabestream auf Fehler innerhalb der Schleife zu überprüfen:
int taxableIncome; for (;;) { cout << "Please enter in your taxable income: "; if (cin >> taxableIncome) { break; // Valid input received } else { cout << "Please enter a valid integer" << endl; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } }
Vergleich:
Beide Ansätze erreichen das Ziel der Eingabevalidierung, aber der alternative Ansatz bietet gewisse Vorteile:
Fazit:
Während die ursprüngliche Schleife eine funktionale Möglichkeit zur Validierung von Eingaben darstellt, wird der alternative Ansatz aufgrund dessen von vielen C-Programmierern bevorzugt wegen seiner Einfachheit und Flexibilität. Durch das Entfernen unnötiger Variablen und die Verwendung von Standardbibliotheksfunktionen bietet es eine schlankere und effizientere Lösung für die Eingabevalidierung.
Das obige ist der detaillierte Inhalt vonWie kann ich eine robuste Eingabevalidierung mit „cin' in C implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!