Hier ist der Code:
string str;
cin>>str;
cout<<"first input:"<<str<<endl;
getline(cin, str);
cout<<"line input:"<<str<<endl;
Das Ergebnis ist, dass getline nie auf Benutzereingaben wartet, so dass die zweite Ausgabe immer leer ist.
Nachdem ich einige Zeit damit verbracht habe, habe ich festgestellt, dass nach dem ersten Aufruf "cin>>str", es scheint ' \n ' ist immer noch in cin gespeichert (mit cin.peek() zur Überprüfung), was getline sofort beendet. Die Lösung besteht darin, eine weitere Zeile zwischen der ersten und der zweiten Verwendung einzufügen: cin.ignore(numeric_limits::max(), '\n');
Ich verstehe aber immer noch nicht, warum die \n ' nach dem ersten Anruf dort gelassen? Was bewirkt istream& operator>> wirklich?