Heim >Backend-Entwicklung >C++ >Wie validiere ich numerische Eingaben in C über „atoi()' hinaus?
Validierung numerischer Eingaben in C
In einem Programm, das Ganzzahleingaben verarbeitet, ist es von entscheidender Bedeutung, sicherzustellen, dass Benutzer gültige Zahlen angeben. Leider ist die Funktion atoi() bei der Verarbeitung mehrstelliger Ganzzahlen unzureichend. In diesem Artikel werden alternative Methoden zur Überprüfung numerischer Eingaben untersucht.
Verwendung des Failbits
Der Eingabestream (cin) von C setzt das Failbit, wenn er auf eine Eingabe stößt, die er nicht analysieren kann. Dies kann genutzt werden, um Eingaben wie folgt zu validieren:
int n; cin >> n; if(!cin) { // User did not input a number cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
Umgang mit Eingabeüberlauf
Wenn Ganzzahlen den maximal zulässigen Wert überschreiten, setzt cin auch das Failbit. Um dies zu verhindern, überprüfen Sie den Stream-Status, bevor Sie die Eingabe lesen:
while(!cin.eof()) { int n; cin >> n; if(!cin) { // Input error occurred cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } else { // Valid input process(n); } }
Diese Schleife liest und validiert die Eingabe weiter, bis das Ende der Datei (EOF) erreicht ist.
Sonstiges Alternativen
Das obige ist der detaillierte Inhalt vonWie validiere ich numerische Eingaben in C über „atoi()' hinaus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!