getline() Problem
-
Hallo Leutz!
Ich habe ein Problem mit der Funktion getline(cin, arrayname) ...... string eingabea, eingabeb; cout<<"Bitte geben Sie eine Nachricht ein:"<<endl; getline(cin, eingabea); cout<<"Geben Sie hier bitte eine zweite Nachricht ein:"<<endl; getline(cin, eingabeb); ...
Normal müsste ich jetzt die eingabea eingeben und dann die eingabeb, doch ich kann nur die eingabeb eingeben, eingabea überspringt mir das Programm einfach, wieso ? Weiss jemand woran das liegt ?
Hoffe mir kann jemand helfen! ThX
n()()bi
-
Ungetested:
Versuch doch mal cin.flush() vor getline einzufügen
-
Funktioniert auch nicht!
Mit cin>> geht es, aber das Problem daran ist, dass sobald in die Variable Sonderzeichen wie "?", "," oda ähnliches, das Programm abbricht ! Gibt es eine andere Funktion als getline, die Sonderzeichen genehmigt ?
-
versuch mal cin.ignore(1,'\n');
nach jedem cout
-
oder eigentlich nur einmal vor dem block muesste reichen sieht so aus als waere da noch ein endl im puffer der beim ersten getline versuch geloescht wird
cin.ignore(1,'\n');
bedeutet dass er alle 1 zeichen vor dem nexten zeilenende loesccht also nur das zeilenende
-
flush sollte aber das selbe bewerkstelligen genau wie endl
-
.o0
nicht raten
hol dir .. wenns das studio 6 ist, irgendwann den stl fix von hume sikkins
http://fara.cs.uni-potsdam.de/~kaufmann/?page=Programming&ProgKNr=1#Codefürs löschen des buffers gibt es verschiedene möglichkeiten..
unter windows wäre dieses eine:#include <string> #include <iostream> using namespace std; int main() { string temp; cout <<"Bitte Ihre Eingabe 1"; getline(cin,temp); cout<<temp<<endl; cin.clear(); //flag auf "buffer auf" setzen cin.ignore(cin.rdbuf()->in_avail()); //lese, solange zeichen im buffer //cin.ignore(numeric_limits<streamsize>::max(), '\n'); //andere variante cout <<"Bitte Ihre Eingabe 2"; string temp1; getline(cin,temp1); cout<<temp1<<endl; }