Программа игнорирует getline если есть if

Если код такой:

void rewrite(string *b) {
        string c;
        getline(cin, c);
        *b = c;
    }
    
    int main()
    {
        string b;
        
        cout << "Please enter a string" << endl;
        getline(cin, b);
        rewrite(&b);
        cout << b;

То программа работает отлично. А если такой:

    void rewrite(string *b) {
                string c;
                getline(cin, c);
                *b = c;
            }
            
            int main()
            {
                string b;
                
                cout << "Please enter a string" << endl;
                getline(cin, b);
char userinput;
    cin >> userinput;
                if (userinput == 'f') {
            rewrite(&b);
            cout << b;
        }

то программа игнорирует getline из функции rewrite. Сама программа должна перезаписывать строку на новую, которую введет пользователь. Переменная userinput нужна для создания консольного меню. Например, при вводе f в консоль запускалась данная функция ввода новой строки, при вводе другого char другая функция и тд.


Ответы (1 шт):

Автор решения: Ярослав Мустафин
char userinput;
    cin >> userinput;
    cin.ignore();

Помогло добавление cin.ignore(); после cin >> как сказал пользователь EOF

→ Ссылка