Heim >Backend-Entwicklung >C++ >Wie validiere ich Benutzereingaben robust als Double in C?

Wie validiere ich Benutzereingaben robust als Double in C?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 20:54:10366Durchsuche

How to Robustly Validate User Input as a Double in C  ?

Benutzereingaben als Double in C validieren

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:

Grundlegender Validierungsansatz

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.

Behebung der Endloseingabeschleife

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!

Stellungnahme:
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