题目描述
题解:
```
C++
#include<iostream>
#include<string>
using namespace std;
struct car
{
string made;
int make;
};
int main(){
int count;
cout<<"How many cars do you wish to catalog?"<<endl;
cin>>count;
cin.get();
car * p=new car[count];
for(int i=0;i<count;i++){
cout<<"Car #"<<i+1<<":\n";
cout<<"Please enter the make: ";
//因为输入的制造商有空格,所以采用getline()函数
cin.ignore();
getline(cin,p[i].made);
cout<<"\nPlease enter the year made: ";
cin>>p[i].make;
//必须有cin.get()
//cin.get();
//cin.clear();
}
cout<<"Here is your collection:\n";
for (int i=0;i<count;i++){
cout<<p[i].make<<" "<<p[i].made<<" \n";
}
return 0;
}
```
遇到问题:如果第一个循环体内没有cin.ignore(),那么在进行循环时,第二次的getline()函数会被忽略(另一种:不添加cin.ignore(),但是在getline()后重新调用一遍cin.get()用来抵消掉输入流里遗留的换行符)