Program kończy działanie

0

Dlaczego ten program wypisuje tylko tekst "Podaj imie i nazwisko" i kończy działanie, po wybraniu opcji '2', która wywołuje funkcję func1, która pyta o imię i nazwisko a następnie je pobiera przez getline(cin, name)? Powinien czekać na wpisanie imienia nazwiska a później je wypisać.

#include <iostream>
using namespace std;

void func1()
{
    string name;
    cout << "Podaj imie i nazwisko: \n";
    getline(cin, name);
    cout << name;
}

int main()
{
    cout << "Wybierz odpowiednia opcje: \n";
    cout << "1. Wypisz 1 \n";
    cout << "2. Podaj imie i nazwisko \n";
    cout << "3. Wypisz 3 \n";
    cout << "4. Wypisz 4 \n";

        char choice;
        cin >> choice;
        switch (choice)
        {
            case '1':
                cout << 1;
                break;
            case '2':
                func1();
                break;
            case '3':
                cout << 3;
                break;
            case '4':
                cout << 4;
                break;
            default:
                cout << "Wybrales zla opcje";
                break;
        }

return 0;
}
0

Spróbuj dać przed getline:

cin.ignore() 
0
getline(cin>>ws, name);
0

albo tak jak podał @_13th_Dragon albo jeśli kompilator jest starszy i nie wspiera jeszcze http://kaczus.ppa.pl/art/Skrzynia_porad,18.html#getline

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0