fflush(stdin); funktioniert nicht!
-
Hallo Leute...
Ich habe folgendes problem:Erstmal der quellcode:
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main() { string a,b,c; int y; cin>>y; switch(y) { case 1: cout<<"Name: "; getline(cin, a); cout<<"Nachname:"; getline(cin, b); cout<<a<<endl; cout<<b<<endl; getchar(); break; case 2: cout<<"Was anderes...blaa"<<endl; getchar(); } }
So. Wer das kompilliert, weiss vielleicht was ich meine. das getline lässt mich nur den Nachnamen einlesen!!! Das kommt soweit ich weiss daher, das ich von der switchanweisung kommt. Aber puffer leeren mit fflush(stdin) funktioniert auch nicht, es tut immer noch das selbe!!! Woran liegts???
#include <iostream> #include <stdio.h> #include <string> using namespace std; int main() { string a,b,c; int y; cin>>y; switch(y) { case 1: fflush(stdin); cout<<"Name: "; getline(cin, a); fflush(stdin); cout<<"Nachname:"; getline(cin, b); cout<<a<<endl; cout<<b<<endl; getchar(); break; case 2: cout<<"Was anderes...blaa"<<endl; getchar(); } }
Hilfe!!
-
Hallo,
fflush(stdin) ist sowieso undefiniert:
http://www.c-plusplus.net/forum/viewtopic.php?t=39349&highlight=fflush+stdin+undefiniertEine Lösung findest du hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=39469&highlight=c+puffer+leeren
-
Wahrscheinlich bleibt von der Eingabe noch newline im Puffer zurück. Ersetze mal fflush(stdin);, was laut Standard nicht definitert ist, durch:
cin.clear(); cin.ignore(cin.rdbuf()->in_avail());