Heim > Backend-Entwicklung > C++ > Wie kann ich eine robuste Eingabevalidierung mit „cin' in C implementieren?

Wie kann ich eine robuste Eingabevalidierung mit „cin' in C implementieren?

Linda Hamilton
Freigeben: 2024-12-29 04:51:09
Original
265 Leute haben es durchsucht

How Can I Implement Robust Input Validation with `cin` in C  ?

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);
Nach dem Login kopieren

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');
    }
}
Nach dem Login kopieren

Vergleich:

Beide Ansätze erreichen das Ziel der Eingabevalidierung, aber der alternative Ansatz bietet gewisse Vorteile:

  • Kürzer und prägnanter:Keine Fehlermarkierung mehr nötig.
  • Keine Begrenzung der ignorierten Zeichen : Verwendet numeric_limits::max(), um alle verbleibenden Zeichen zu ignorieren, bis ein Zeilenumbruch statt eines auftritt beliebiger Wert von 80.
  • Potenzial für eine verbesserte Fehlerbehandlung:Auf Wunsch können Sie verschiedene Arten von Eingabefehlern innerhalb der Schleife separat behandeln.

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!

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