0
我剛剛遇到了這個小問題,當我輸入「Student No.1」的詳細信息時,以及第二個輸入時,它跳過了名稱。任何幫助? 這裏是到目前爲止我的代碼:在C++中使用getLine()的錯誤
#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;
}
我試圖做到這一點,但是當涉及到打印時,它會跳過第一個記錄的名稱的第一個字母。假設我把國王Garrett放在名字上,那麼它只會顯示「ing Garrett」 – Kakarot 2014-12-07 13:38:01
調用'cin.ignore(1,'\ n');'作爲第一個for循環內的最後一個命令,一切都應該正常工作。 – 2014-12-07 14:53:03
它仍然是同一個人。我把cin.ignore();在getline()之前,然後我把cin.ignore(1,'\ n');在第一個for循環的最後部分,但它仍然相同 – Kakarot 2014-12-07 15:01:02