Ткните носом в косяк, плиз

Доброго времени суток. Подскажите, пожалуйста, в чем может быть проблема. В куске кода программа уточняет некоторые входные данные у пользователя, но в определенный момент она не дожидается ввода данных от пользователя, а сразу переходит к следующему шагу. Часть кода:

    //-------------------------Получение данных от пользователя--------------------

cout << "Укажите название напитка " << endl;
getline(cin, alcname);
cout << "Укажите крепость напитка в градусах" << endl;
cin >> g;
cout << "Укажите имеющееся у вас количество бутылок" << endl;
cin >> k;
cout << "Человека какого пола вы ждете в гости? Если мужчину, введите 0, если женщину - 1 " << endl;
cin >> s;
if (s != 0)
{
    if (s != 1)
    {
        cout << "Ошибка! Значение должно быть равно 1 или 0. Повторите ввод " << endl;
        cin >> s;
    }
}
if (s == 0)
{
    cout << "И как же зовут вашего гостя? Введите имя " << endl;
    getline(cin, human_name);
    cout << "Укажите возраст гостя " << endl;
    cin >> v;
} 
else
{
    cout << "И как же зовут вашу гостью? Введите имя " << endl;
    getline(cin, human_name);
    cout << "Укажите возраст гостьи " << endl;
    cin >> v;
}
cout << "А примерный вес помните? Укажите в килограммах" << endl;
cin >> m;

Сразу после запроса имени программа переходит к запросу возраста, не ожидая ввода данных. Возможно, я неправильно использую метод getline()? С другой стороны, во второй строке кода он так же используется и прекрасно работает. Скриншот работы программы:

P.S. За идиотскую тематику программы тапками не кидайтесь, пожалуйста :)

Croessmah дело говорит. Я решил проблему, тупо добавив перед вторым getline() один лишний

getline(cin, empty);

Он съедает этот \n

Croessmah а как правильно очищать поток? Мне почему то кажется что getline не самый лучший способ.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.