Heim > Backend-Entwicklung > C++ > Wie kann man dafür sorgen, dass „cin' nur numerische Eingaben in C akzeptiert?

Wie kann man dafür sorgen, dass „cin' nur numerische Eingaben in C akzeptiert?

DDD
Freigeben: 2024-12-17 07:34:25
Original
621 Leute haben es durchsucht

How to Make `cin` Accept Only Numerical Input in C  ?

Cin schreibgeschützte Zahlen erstellen

Das Erzwingen der numerischen Eingabe mithilfe von cin kann eine Herausforderung darstellen, insbesondere bei der Verarbeitung gemischter Eingabetypen. In diesem Artikel wird eine Lösung untersucht, um sicherzustellen, dass cin nur numerische Werte akzeptiert.

Im bereitgestellten Code versuchen while-Schleifen, ungültige Eingaben zu korrigieren, indem sie nicht numerische Zeichen ignorieren. Bei der Verarbeitung mehrerer Eingaben stößt diese Methode jedoch auf Einschränkungen.

Lösung: Verwendung von std::getline und std::string

Um diese Hürde zu überwinden, können wir Folgendes verwenden: ein umfassenderer Ansatz:

  1. Lesen Sie die gesamte Zeile mit std::getline(): Dies liest die komplette Zeile der Benutzereingabe als Zeichenfolge.
  2. Konvertieren Sie die Zeichenfolge in ein Double mit std::stringstream:

    • Erstellen Sie eine stringstream ss aus der Eingabezeile.
    • Versuchen Sie, ein Double mit dem Befehl >> zu extrahieren. Operator.
  3. Überprüfen Sie die Konvertierung:

    • Überprüfen Sie, ob die Konvertierung erfolgreich war und ob der Stream das Ende erreicht hat des Strings (eof()).
    • Bei Erfolg die Schleife verlassen. Andernfalls wird eine Fehlermeldung angezeigt.

Hier ist eine Beispielimplementierung:

#include <sstream>
#include <string>

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

Diese Lösung stellt sicher, dass sowohl Ganzzahlen als auch Gleitkommazahlen korrekt verarbeitet werden , wobei nicht numerische Zeichen vollständig verworfen werden.

Das obige ist der detaillierte Inhalt vonWie kann man dafür sorgen, dass „cin' nur numerische Eingaben in C akzeptiert?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage