CyberDemon Geschrieben 22. November 2002 Geschrieben 22. November 2002 Hi C++ Cracks! Ich habe zwei Funtionen, die Werte einlesen. Nach dem ich die erste Eingabe mit ENTER abgeschlossen habe, wird die darauffolgende Eingabefunktion gar nicht aufgerufen. In der Ausgabe der letzteren Funktion steht dann auch nichts drin. Wenn ich die erste Funktion lösche, funktioniert die zweite einwandfrei. Codeauszug: void Daten::SetPlz() { int p=0; cout<<"Bitte PLZ eingeben: "; cin>>plz; if(p <10000 || p > 99999) { while(p <10000 || p > 99999) { cout<<"\nFEHLER !!! Falsche PLZ!\n"; cout<<"Bitte neu eingeben: "; cin>>p; } plz = p; } plz = p; } int Daten::GetPlz() { return plz; } void Daten::SetOrt() // Diese Funktion rasselt durch { cout<<"Bitte Ort eingeben: "; cin.getline(ort,19); } string Daten::GetOrt() { return ort; // hier wird nichts zurückgegeben } Für ein detailiertes Beispiel und/oder Erklärung wäre ich sehr dankbar. Zitieren
Guybrush Threepwood Geschrieben 22. November 2002 Geschrieben 22. November 2002 Hi, also bei scanf() hat immer fflush(stdin) geholfen, wie das bei cin ist weiß ich nicht, müßte aber eigentlich auch klappen. Schreib einfach nachdem du das erste mal einließt "fflush(stdin);" Gruß Guybrush Zitieren
vinc Geschrieben 27. November 2002 Geschrieben 27. November 2002 für cin gibt es die methode ignore (), d.h. nach cin >> p; ein cin.ignore (); dadurch wird das return, das mit cin >> p; nicht aus dem puffer entfernt wurde, eliminiert. ansonsten wird das return sofort in der zweiten funktion verwendet und somit ist eine eingabe nicht mehr möglich. :eek: Zitieren
CyberDemon Geschrieben 27. November 2002 Autor Geschrieben 27. November 2002 Genau danach habe ich gesucht. Funktioniert perfekt! :marine Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.