Heim >Backend-Entwicklung >C++ >Wie validiere ich Benutzereingaben robust als Double in C?
Eine häufige Programmieraufgabe besteht darin, Benutzereingaben zu validieren, um sicherzustellen, dass sie bestimmte Kriterien erfüllen. Ein solches Kriterium besteht darin, sicherzustellen, dass die Eingabe eine gültige Gleitkommazahl ist, insbesondere ein Double. So können Sie diese Validierung in C angehen:
double x; while (1) { cout << ">"; if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; } }
Dieser Code bietet eine grundlegende Validierung, indem er versucht, ein Double aus der Standardeingabe zu lesen. Wenn die Eingabe erfolgreich gelesen wurde, fahren Sie mit dem Programm fort. Andernfalls wird eine Fehlermeldung angezeigt.
Der obige Code kann jedoch dazu führen, dass das Programm die Fehlermeldung auch bei gültigen Eingaben kontinuierlich ausgibt. Dies liegt daran, dass der Cin >> x-Zeile schlägt bei ungültiger Eingabe fehl, sodass das Fehlerflag im Eingabestream gesetzt bleibt. Um dieses Problem zu beheben, müssen Sie den Fehlerstatus löschen, nachdem die ungültige Eingabe erkannt wurde.
while (1) { if (cin >> x) { // valid number break; } else { // not a valid number cout << "Invalid Input! Please input a numerical value." << endl; cin.clear(); while (cin.get() != '\n') ; // empty loop to discard invalid input } }
Die Zeile cin.clear() löscht das Fehlerflag und die anschließende leere Schleife verbraucht die verbleibenden ungültigen Zeichen auf der Eingabezeile. Dadurch wird sichergestellt, dass der nächste Eingabeversuch mit einem sauberen Blatt beginnt.
Durch Befolgen dieser Schritte können Sie Benutzereingaben effektiv als Double in C validieren und so einen robusten und benutzerfreundlichen Eingabevalidierungsmechanismus bereitstellen.
Das obige ist der detaillierte Inhalt vonWie validiere ich Benutzereingaben robust als Double in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!