Heim > Backend-Entwicklung > C++ > Wie können C-Streams verwendet werden, um ungültige numerische Eingaben zuverlässig zu verarbeiten?

Wie können C-Streams verwendet werden, um ungültige numerische Eingaben zuverlässig zu verarbeiten?

Barbara Streisand
Freigeben: 2024-12-28 15:11:14
Original
998 Leute haben es durchsucht

How Can C   Streams Be Used to Reliably Handle Invalid Numeric Input?

Auflösen ungültiger Eingaben mit C-Streams

Problem:

Der bereitgestellte Code soll verhindern, dass nicht numerische Zeichen angezeigt werden als Eingabe akzeptiert. Es kann jedoch nicht mit Situationen umgehen, in denen die Eingabe ein Zeichen nach einer gültigen Zahl enthält.

Vorgeschlagene Lösung:

Um dieses Problem zu beheben, schlagen wir einen anderen Ansatz vor mit std::getline und std::string.

Code Snippet:

#include <string>
#include <sstream>

int main() {
    std::string line;
    double d;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> d) {
            if (ss.eof()) {   // Success
                break;
            }
        }
        std::cout << "Error!" << std::endl;
    }
    std::cout << "Finally: " << d << std::endl;
}
Nach dem Login kopieren

Erklärung:

Diese überarbeitete Lösung folgt diesen Schritten:

  1. Lesen Sie das Ganze line: Mit std::getline wird die gesamte Eingabezeile, einschließlich Leerzeichen und Sonderzeichen, in eine String-Variable übernommen line.
  2. Konvertieren Sie die Zeichenfolge in double: Ein std::stringstream-Objekt ss wird erstellt, um die Zeichenfolgenzeile zu speichern. Der Stream wird dann verwendet, um den numerischen Wert mithilfe der Funktion >> zu extrahieren. Operator.
  3. Auf erfolgreiche Konvertierung prüfen: Wenn der SS-Stream die Zahl erfolgreich extrahiert und das Ende der Zeichenfolge erreicht, zeigt dies eine gültige numerische Eingabe an.
  4. Fehler behandeln:Wenn die Konvertierung fehlschlägt, wird eine Fehlermeldung angezeigt.
  5. Dieser Ansatz stellt sicher, dass nur gültige Reelle Zahlen werden als Eingabe akzeptiert, unabhängig von nachgestellten Zeichen oder Leerzeichen in der Eingabe.

    Das obige ist der detaillierte Inhalt vonWie können C-Streams verwendet werden, um ungültige numerische Eingaben zuverlässig zu verarbeiten?. 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