3
#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++ 中解决这个问题?谢谢!

4

1 回答 1

3

尝试以下操作:

 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,您按回车键。它会\n留在cin溪流中。你需要cin.ignore忽略那个\n角色。您可能会发现basic_istream/ignore很有用。

于 2013-06-11T18:53:15.330 回答