Heim > Backend-Entwicklung > C++ > Wie kann ich sicherstellen, dass nur numerische Eingaben mit „cin' von C erfolgen?

Wie kann ich sicherstellen, dass nur numerische Eingaben mit „cin' von C erfolgen?

Mary-Kate Olsen
Freigeben: 2024-12-16 07:47:10
Original
771 Leute haben es durchsucht

How Can I Ensure Only Numeric Input Using C  's `cin`?

Verbesserung der Eingabevalidierung: Nur numerische Eingaben akzeptieren

Bei der Verwendung von cin zum Empfangen von Benutzereingaben ist es wichtig, die Datenkorrektheit durchzusetzen, insbesondere beim Handeln mit numerischen Werten. Der bereitgestellte Code stößt auf ein Problem, bei dem nicht numerische Zeichen wie „x“ in „1x“ ignoriert werden, was möglicherweise zu falschen Ergebnissen führt.

Eine robuste Lösung

Um dieses Problem zu beheben, besteht ein gründlicherer Ansatz darin, std::getline und std::string zu verwenden, um die gesamte Eingabezeile, einschließlich aller nicht numerischen Zeichen, zu erfassen. Der folgende erweiterte Codeausschnitt veranschaulicht diesen Ansatz:

#include <string>
#include <sstream>

double enter_number()
{
    double number;
    std::string line;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> number) {
            if (ss.eof()) { // Success
                break;
            }
        }
        std::cout << "Invalid input" << std::endl;
        std::cout << "Try again" << std::endl;
    }
    return number;
}
Nach dem Login kopieren

Erklärung der Implementierung

  • std::getline erfasst die gesamte Eingabezeile, einschließlich Leerzeichen und Sonderzeichen Zeichen.
  • std::stringstream wird verwendet, um die Eingabezeile in ein Double umzuwandeln Datentyp.
  • Der >> Der Operator extrahiert den numerischen Wert aus der Eingabezeile.
  • Die eof-Prüfung stellt sicher, dass die gesamte Zeile erfolgreich in ein Double konvertiert wurde, bevor die Schleife verlassen wird.
  • Fazit

    Mit diesem erweiterten Ansatz wird jeder Versuch, nicht numerische Zeichen einzugeben, als ungültige Eingabe gekennzeichnet und der Benutzer wird dazu aufgefordert Geben Sie eine gültige Nummer erneut ein. Diese Lösung behebt effektiv das im Originalcode dargestellte Problem und stellt sicher, dass nur gültige numerische Eingaben akzeptiert werden, unabhängig von zusätzlichen nicht numerischen Zeichen in der Eingabezeile.

    Das obige ist der detaillierte Inhalt vonWie kann ich sicherstellen, dass nur numerische Eingaben mit „cin' von C erfolgen?. 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