C++ 无法读取结构中的字符串

C++ 无法读取结构中的字符串,c++,string,struct,C++,String,Struct,当我运行程序时,它会直接进入enter-marks部分并跳过getline部分。而且,当我使用cin时,它工作正常,但我显然看不清全名。我做错了什么? 以下是包含输入和输出函数的结构: struct student { string name; float marks; void getinfo() { cout<<"Enter name:\n"; getline (cin , name); //This part gets skipped co

当我运行程序时,它会直接进入enter-marks部分并跳过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;
}
};

如果混合使用
cin
getline
用法,您必须记住
cin
通常会在键盘缓冲区中留下
\n
字符。当
getline
ckecks缓冲区时,它会将
\n
字符作为第一个字符并立即结束。使用
cin.ignore
before
getline
函数删除
\n
字符。

您好,非常感谢您的回答。程序现在运行良好。只是想知道是否有更好的方法来输入相邻的数字和字符串?好吧,你的方法是正确的。您只需要记住提到的约束。
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();
};