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
Barbara StreisandOriginal
2024-12-28 15:11:141009Durchsuche

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;
}

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!

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