2017-10-05 7 views
0
//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文がコンソールからの入力を得られない理由は何ですか?getlineステートメントが入力を取得していません

+0

'cin.ignore()'を使う –

答えて

1

cinは、バッファに新しい行を残します。したがって、rnocinから取得すると、cinバッファには実際には\nが残っています。あなたが名前を読むために行くと、それはちょうど\nをつかんで、すぐに戻る。 cinの後にcin.ignore();のような処理を行うと、バッファがクリアされ、ユーザー入力を正しく読み取ることができます。

関連する問題