如何在getline之后输入

时间:2015-05-16 04:55:46

标签: c++ getline

subset(transform(frame, total=ave(Freq, A, FUN=sum)), B==1, select=-B)
#   A Freq total
#3 0    8    83
#4 1    6    27

问题是,在电子邮件地址之后它没有收到输入,程序忽略了在phno中输入,直接在电子邮件地址后退出。

1 个答案:

答案 0 :(得分:0)

我对您的代码稍作修改。

请注意,我直接在变量cin.ignore()cin上使用cin >> S1.ID后,致电cin >> S1.phno

这是因为当你在int上使用cin时,它会将\n留在缓冲区中。当您稍后致电getline(cin,...)时,您只需填充剩余的\n,并认为这是您的整个"行。"

有一个工作示例here

#include <iostream>
#include <string>
using namespace std;

struct Student
{
    int ID;
    long phno;
    string name;
    string depart;
    string email;
};

int main ()
{
    Student S1 ;

    cout << "\n=======================================================\n" ;

    cout << "Enter ID no. of student 1       :\n" ;
    cin >> S1.ID ; 
    cin.ignore();

    cout << "Enter name of student 1         :\n" ;
    getline(cin, S1.name) ; 

    cout << "Enter department of student 1   :\n" ;
    getline(cin, S1.depart) ;

    cout << "Enter phone number of student 1 :\n" ;
    cin >> S1.phno ;
    cin.ignore();

    cout << "Enter email adress of student 1 :\n" ;
    getline(cin, S1.email) ;    

    cout << endl << endl;

    cout << S1.ID << endl << S1.name << endl << S1.depart << endl << S1.phno << endl << S1.email << endl;

    return 0;
}