2015-05-16 1 views
0
#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  : " ; cin >> S1.ID ; 
    cout << "Enter name of student 1   : " ; getline(cin, S1.name) ; cin.ignore(); 
    cout << "Enter department of student 1 : " ; getline(cin, S1.depart) ; cin.ignore(); 
    cout << "Enter email adress of student 1 : " ; getline(cin, S1.email) ; cin.ignore(); 
    cout << "Enter phone number of student 1 : " ; cin >> S1.phno ;  

    return 0; 
} 

Проблема в том, что он не принимает входные данные после того, как адрес электронной почты игнорируется, чтобы принимать входные данные в phno, непосредственно выходить после emailadress.Как принять ввод после getline

+1

Почему вы вызываете 'cin.ignore();'? – b4hand

ответ

0

Я внесла некоторые изменения в ваш код.

Обратите внимание, что я только вызов cin.ignore() после использования cin непосредственно на переменную (cin >> S1.ID или cin >> S1.phno).

Это связано с тем, что, когда вы используете cin на int, он оставляет \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; 
} 
+0

Ну, спасибо, столько проблем решено :) –