2014-12-07 3 views
0

У меня просто была эта небольшая проблема, когда я закончил вводить детали для «Студент № 1», а когда он ко второму, он пропускает имя. Любая помощь? Вот мой код до сих пор:Ошибка при использовании getLine() в C++

#include<stdlib.h> 
#include<iostream> 
#include <string> 
using namespace std; 

int main(){ 

    int age[3]; 
    double gpa[3]; 
    string name[3], level[3]; 

    cout<<"< < < < < Enter 3 Student Data > > > > >"<<endl; 
    for (int x=0; x<3; x++){ 
    cout<<"-------------------------------"<<endl; 
    cout<<"Student No."<<x+1<<endl; 
    cout<<"Enter name: "; 
    getline(cin, name[x]); 
    cout<<"Enter your age: "; 
    cin>>age[x]; 
    cout<<"Enter your GPA: "; 
    cin>> gpa[x]; 
    do{ 
    cout<<"Enter you grade level [freshman, sophomore, junior, or senior]: "; 
    cin>>level[x]; 
    }while(level[x] != "freshman" && level[x] != "sophomore" && level[x] != "junior" && level[x] != "senior"); 
    cout<<"-------------------------------"<<endl; 
    } 

    system("pause"); 
    cout<<endl<<endl<<"< < < < < Enter 3 Student Datas > > > > >"<<endl; 
    for (int x=0; x<3; x++){ 
    cout<<"-------------------------------"<<endl; 
    cout<<"Name: "<<name[x]<<endl<<"Age: "<<age[x]<<endl<<"GPA: "<<gpa[x]<<endl<<"Level: "<<level[x]; 
    cout<<endl<<"-------------------------------"<<endl; 
    //system ("pause"); 
    } 
    return 0; 

} 

ответ

0

Если смешать CIN и GetLine использования вы должны помнить, что CIN обычно оставляет \ п символ в буфер клавиатуры. Когда getline проверяет буфер, он видит \ n символ как первый и сразу заканчивается. Используйте cin.ignore перед функцией getline для удаления символа \ n.

+0

Я пытался это сделать, но когда дело доходит до печати, он пропускает первую букву имени первой записи. Предположим, что я поставил King Garrett на имя, тогда отобразится только «ing Garrett». – Kakarot

+0

Вызов 'cin.ignore (1, '\ n');' как последняя команда внутри первого цикла, и все должно работать нормально. –

+0

это все тот же человек. Я ставлю cin.ignore(); перед getline(), тогда я ставлю cin.ignore (1, '\ n'); на последней части первого цикла цикла, но все равно то же самое – Kakarot

Смежные вопросы