switch-case konstrukt

Hallo!
Wenn ich ein switch-case Konstrukt erstelle, habe ich das Problem, dass wenn ich getline(cin, name) einbaue, das Programm nicht auf eine Eingabe wartet...
Hier ein Beispiel:
Code:
int main()
{
  string text;
  int i;
  cin>>i;
  switch(i)
  {
   case 1:
   {
   //tu irgendwas
   break;
   }
   case 2:
   {
   getline(cin, text);  //Hier sollte normalerweise die Eingabe erfolgen...
   break;
   }
  }
}

Ich hoffe ihr habt einen Lösungsvorschlag. Danke schon im voraus.
 
Hallo

Wenn du beim cin>>i; enter drückst bleibt das enter im Tastaturbuffer.
Deshalb liest das getline() nicht weil es das enter zum Abbruch verwendet.

Also du kannst vor dem getline() noch eine getline() machn oder den tastaturbuffer
mit zb. fflush(stdin) löschen.

Code:
{
      getline(cin,text);
      getline(cin, text);
      cout<<text;
       break;
}

oder

Code:
{
      fflush(stdin);
      getline(cin, text);
      cout<<text;
       break;
}
 
vielen Dank für deine super Antwort, werde ich gleich mal ausprobieren. Erstaunlich ist dann nur, dass bei einem zweiten cin>>variable die Eingabe nicht gespeichert bleibt...
 
Zurück