//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语句没有从控制台获取输入吗?
答案 0 :(得分:1)
cin
会在缓冲区中留下新行。因此,当您从rno
获得cin
时,\n
缓冲区中实际上会有cin
。当你去读取名字时,它只会抓住\n
并立即返回。
在第一个cin.ignore();
之后执行cin
之类的操作应清除缓冲区并允许您正确读取用户输入。