2017-10-05 147 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會在緩衝區中留下新行。因此,當從cin得到rno時,cin緩衝區中實際上還有一個\n。當你去讀這個名字時,它只是抓住了\n並立即返回。 在第一個cin後應該執行類似cin.ignore();的操作應該清除緩衝區並允許您正確讀取用戶輸入。