Prüfen ob richtiger Typ eingegeben wurde
-
Tag zusammen mir ist grade eine Frage aufgekommen als ich ein anderes Thema gelesen habe .
Die Frage lautet : Wie kann ich überprüfen ( und ggf darauf reagieren) ,wenn ich als Beispiel vom Benutzer eine int Zahl eingeben lassen möchte ,dieser aber einen Char / String Wert wie "a" eingibt?
Mal als Beispiel :#include <iostream> int main() {int zahl; std::cin >> zahl ; // Jetzt wäre die Frage wie ich überprüfen kann ,ob der eingegebene Wert wirklich ein int Wert ist ? //Und was würde passieren ,wenn der Benutzer nun einen anderen Typ wie z.b. einen String eingeben würde? // Ich denke wohl kaum ,dass es zulässig ist zuschreiben if zahl != int ,daher die Frage :) return 0 ; }
-
#include <iostream> int main() { int zahl; if (std::cin >> zahl) std::cout << "Uglaublich aber wahr!\n"; else std::cout << "Nein!!"; }p.s. Gib dir mal nächstes mehr Mühe beim Schreiben des Codes.
-
[Rewind] schrieb:
#include <iostream> int main() { int zahl; if (std::cin >> zahl) std::cout << "Uglaublich aber wahr!\n"; else std::cout << "Nein!!"; }p.s. Gib dir mal nächstes mehr Mühe beim Schreiben des Codes.
Achsooo

Sry hab da falsch gedacht grade aber natürlich die cin Funktion gibt ja auch nen Rückgabewert ob es erfolgreich / nicht erfolgreich war war ne zml doofe Frage ist mir jetzt auch bewusst.
Zum Code <include> iostream habs grad jetzt erst gemerkt
,aber hatte ihn auch noch nicht in meiner Ide , sondern habs nur schnell hierhin geschrieben naja peinlich peinlich aber was soll man machen bin halt noch Anfänger 
Danke für deine Antwort hier kann geclosed werden von mir aus.
-
Ich würde das anders lösen, da Rewind's Lösung mir nie den else-Zweig anzeigt.
#include <iostream> #include <limits> int main() { int a; while( !( std::cin >> a ) ) { std::cout << "Falsche Eingabe " << '\n'; std::cin.clear(); std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' ); } std::cin.get(); }
-
Zagatho_zero87 schrieb:
Ich würde das anders lösen, da Rewind's Lösung mir nie den else-Zweig anzeigt.
#include <iostream> #include <limits> int main() { int a; while( !( std::cin >> a ) ) { std::cout << "Falsche Eingabe " << '\n'; std::cin.clear(); std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' ); } std::cin.get(); }Danke noch eine Frage gibt es einen Grund weshalb du (so wie ich es verstanden habe) den Eingabepuffer leerst `?
Würde wenn ich den int wert bei Fehlschlag erneut eingeben lasse ohne dieses leeren des Puffers ein Fehler entstehen ,ist das einfach guter Styl ,oder hat es einen anderen Effekt?
Denn wenn ich es ohne leeren des Puffers erneut eingeben würde würde doch einfach der aktuelle Wert überschrieben werden wo ist der unterschied( der nutzen des leeren des Puffers)?