无法读取结构中的字符串

时间:2014-12-04 10:04:27

标签: c++ string struct

当我运行程序时,它会立即进入输入标记部分并完全跳过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();
};

1 个答案:

答案 0 :(得分:0)

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