struct und cin.get...hilfe!!!
-
also folgende struktur:
struct geburtstage{
char name[50];
int tag;
int monat;
int jahr;
};Man wählt nun zwischen einer Auswahl von Eingeben, Ausgeben und Ende.
Für die Eingabe ist folgende Funktion zuständig:void input(int& zaehler, struct geburtstage* b) {
cout<<"Name : ";
cin>>b[zaehler].name;
cout<<"Tag : ";
cin>>b[zaehler].tag;
cout<<"Monat: ";
cin>>b[zaehler].monat;
cout<<"Jahr : ";
cin>>b[zaehler].jahr;
zaehler++;
}wenn ich jetz nicht
cin>>b[zaehler].name;
sondern
cin.getline(b[zaehler].name, sizeof(b[zaehler].name));
schreibe.
Jedoch habe ich dann beim ausführen des Programmes keine möglichkeit den Namen einzugeben sonder ich werde aufgefordert gleich den Tag einzugeben. Was ist an meiner Lösung falsch????
mfg
-
Hm, setz mal vor das Einlesen via std::cin ein:
cin.sync(); cin.clear();Um den Eingabepuffer zu leeren, vllt. ist da ja noch wat drin
.
-
okay danke so geht es. aber kann mir vll einer erklären wieso es ohne diese beiden funktionen nicht ging???
immerhin kommt im programm vorher noch keine eingabe vom benutzer sodass der puffer noch leer ist. wieso überspringt er mein cin.getline() ohne cin.sync() und cin.clear() einfach so????mfg
-
Hast du vorher schon eine Eingabe per std::cin getätigt?
-
ja stimmt jetz seh ich es..hatte ich übersehen ich habe vorher schon eine eingabe mit cin wobei der benutzer dabei eine zahl von 1-4 eingeben muss. aber warum wirkt sich das so fatal auf cin.getline() aus??