#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有用。

09-04 16:07
查看更多