Hier ist der Code
%Vor%Mein Problem ist, dass wenn ich etwas wie 1x eingib, dann wird 1 als Eingabe genommen, ohne das Zeichen zu bemerken, das für einen anderen Lauf ausgelassen wurde. Gibt es einen Weg, wie man es mit irgendeiner reellen Zahl, z. 1.8?
Ich würde std::getline
und std::string
verwenden, um die ganze Zeile zu lesen und dann erst aus der Schleife auszubrechen, wenn Sie die gesamte Zeile in ein Double konvertieren können.
Wenn cin auf eine Eingabe stößt, kann sie die angegebene Variable nicht richtig einlesen (z. B. Eingabe eines Zeichens in eine Integer-Variable), sie geht in einen Fehlerzustand und belässt die Eingabe im Puffer.
Sie müssen mehrere Dinge tun, um dieses Szenario richtig zu behandeln.
Der folgende Code bietet eine von zahlreichen Methoden, um diese drei Dinge zu tun.
%Vor%Sie könnten einfach einen großen Wert an cin.ignore wie 1000 übergeben und es wird sich wahrscheinlich für alle praktischen Zwecke genau gleich verhalten.
Sie können cin auch nach dem Eingabeversuch testen und so behandeln, so etwas wie if (! cin) {// bereinige den Fehler}.
Überprüfen Sie die istream-Referenz für andere Elementfunktionen, um den Stream-Status zu verarbeiten: Ссылка
Tags und Links c++