getline语句没有得到输入

时间:2017-10-05 17:05:08

标签: c++ string class io getline

//class
class student
{
    public:
    int rno;
    string name;
    int marks;
    int ran;

    void getinfo()
    {   a:
        cout<<"\t \tenter the roll number"<<endl;
        cin>>rno;
        cout<<"\t \tenter the name"<<endl;
        getline(cin,name);
        cout<<"\t \tenter the marks"<<endl;
        cin>>marks;
    }
    void showinfo()
    {

        cout<<"\t"<<ran<<"\t "<<rno<<"  \t\t"<<name<<" \t\t"<<marks<<endl<<endl;
    }

};

当我在滚动输入后获得控制台中对象的输入时,它正在打印“输入名称”然后没有任何机会给出输入它显示下一个打印语句“输入分数”。有什么理由说getline语句没有从控制台获取输入吗?

1 个答案:

答案 0 :(得分:1)

cin会在缓冲区中留下新行。因此,当您从rno获得cin时,\n缓冲区中实际上会有cin。当你去读取名字时,它只会抓住\n并立即返回。 在第一个cin.ignore();之后执行cin之类的操作应清除缓冲区并允许您正确读取用户输入。