#include <iostream>
#include <string>
using namespace std;
struct car
{
string make;
int year;
};
int main()
{
int n;
cin >> n;
car * pt = new car[n];
for (int i=0; i<n; i++)
{
getline(cin, pt[i].make);
cin >> pt[i].year;
}
for (int i=0; i<n; i++)
cout << pt[i].year << ' ' << pt[i].make << endl;
return 0;
}
键入输入内容时,只能键入一个数字和一个字符串。然后程序显示一些零。它阻止我输入更多输入。有人可以向我解释发生了什么以及如何在C++中解决此问题吗?谢谢!
最佳答案
请尝试以下操作:
for (int i=0; i<n; i++)
{
cin.clear();
cin.ignore();
getline(cin, pt[i].make);
cin >> pt[i].year;
}
原因是
cin >> pt[i].year;
当您输入一些“东西”作为
year
时,请按Enter键。它将在\n
流中剩余cin
。您需要使用cin.ignore
才能忽略该\n
字符。您可能会发现basic_istream/ignore有用。