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;
}
Я пытался это сделать, но когда дело доходит до печати, он пропускает первую букву имени первой записи. Предположим, что я поставил King Garrett на имя, тогда отобразится только «ing Garrett». – Kakarot
Вызов 'cin.ignore (1, '\ n');' как последняя команда внутри первого цикла, и все должно работать нормально. –
это все тот же человек. Я ставлю cin.ignore(); перед getline(), тогда я ставлю cin.ignore (1, '\ n'); на последней части первого цикла цикла, но все равно то же самое – Kakarot