Как использовать getline, когда есть предыдущий ввод?getline (cin, stringName) не работает из-за предыдущего вклада - PullRequest
0 голосов
/ 20 сентября 2019

'getline (cin, string)' работает эффективно, когда в моем коде нет предыдущего ввода.

Когда есть предыдущий ввод (тип данных int), компилятор игнорирует код для ввода строкового типа данных 'getline (cin, string) 'и продолжает работу с остальной частью программы.

Это просто домашнее задание, я уже пытался изменить тип данных.Я написал cin.clear ();и cin.sync ();до функции getline.

#include <iostream>
#include <string>

using namespace std;
int main() {
     const int SECRET =11;

        double num1;
        double num2;
        int newNum;
        string name;

        cout <<"Please enter two whole numbers" <<endl;
        cin >>num1 >>num2; /*HERE I MADE THIS LINE A COMMENT AND THE          GETLINE FUNTION WORKED AS USUAL.*/


        cout <<"\nThe value of the first number is " <<num1 <<" and the value of the second number is " <<num2 <<endl;
        newNum =(num1*2) +num2;
        cout <<"The new number is: "<< newNum <<endl;
        newNum =newNum +SECRET;
        cout <<"The UPDATED new number is: " <<newNum <<endl;
        cin.clear();
        cin.sync();

    cout <<"Imput your name" <<endl;
    getline (cin,name);
    cout <<"Your name is " <<name <<endl;

    return 0;
}

Я ожидал ввести данные 'name' в программу.Но программа перешла строку кода или использовала оставшиеся данные.

1 Ответ

0 голосов
/ 20 сентября 2019

Вам не нужно cin.clear(); или cin.sync();.Используйте cin.ignore(); перед getline.

...