Не в состоянии прочитать строку в структуре

0

Когда я запускаю программу, он сразу же переходит к части ввода меток и вообще пропускает часть getline. Также, когда я использую cin, он отлично работает, но я, очевидно, не могу прочитать полное имя. Что я делаю не так? Вот структура с функциями ввода и вывода:

struct student
 {
    string name;
    float marks;

 void getinfo()
{
    cout<<"Enter name:\n"; getline (cin , name); //This part gets skipped
    cout<<"Enter marks:\n"; cin>>marks; cout<<endl;
}

void showinfo()
{
    cout<<"\nName: "<<name;
    cout<<"\nMarks: \n"<<marks;
}
};

И вот функция, которую я называю:

void stack::push()
{
    if(top==4)
        cout<<"Overflow!\n";
    else
    {
        top++;
        S[top].getinfo();
    }
}

И наконец, вот классный стек:

class stack
{
    student S[5];
    int top;

public:

    stack() { top=-1;}
    void push();
    void pop();
    void display();
};
Теги:
string
struct

1 ответ

0
Лучший ответ

Если вы смешиваете использование cin и getline вы должны помнить, что cin обычно оставляет символ \n в буфере клавиатуры. Когда getline ckecks buffer, он видит \n символ как первый и сразу заканчивается. Используйте cin.ignore перед функцией getline для удаления символа \n.

  • 0
    Привет, большое спасибо за ответ. Теперь программа работает нормально. Просто хотел узнать, есть ли лучший способ ввести число и строку рядом друг с другом?
  • 0
    Ну, твой метод правильный. Вам нужно только помнить об упомянутых ограничениях.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню