Heim >Backend-Entwicklung >C++ >Wie kann ich sicherstellen, dass nur numerische Eingaben mit „cin' von C erfolgen?
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; }
Erklärung der Implementierung
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!