如何在动态调整大小的结构中打印所有值? C ++

时间:2019-01-11 17:01:56

标签: c++ arrays struct

我有一个动态调整大小的struct []。我问用户要多少条记录然后创建那么多结构,然后将名称和年龄信息存储在该结构中。问题是当打印出该数据时,我仅打印用户输入的姓氏和年龄。我想打印所有值。

struct Records
{
    char name [32] ;
    int age;
};
void program2()
{
    Records rec;
    int size;
    cout << "How many record would you like?";
    cin >> size;
    cout << "\n" << size;
    Records* a = new Records[size];
    for (int i = 0; i < size; i++)
    {
        cout << "Whats the name for the Record: ";
        cin >> rec.name;
        cout << rec.name;
        cout << "What is the age for this record: ";
        cin >> rec.age;

    }
    for (int i = 0; i < size; i++)
    {
        cout << "\n" << rec.name << rec.age;
    }
}

2 个答案:

答案 0 :(得分:1)

在您的代码中,变量rec与数组无关。要访问数组位置i处的元素,您需要使用a[i]

例如:

cin >> a[i].name;

cout << "\n" << a[i].name << " " << a[i].age;

答案 1 :(得分:0)

毫不奇怪-您实际上是在重复打印您创建的最后一条记录(rec)。您的最后一个循环实际上没有遍历数组。

此外,第一个循环仅创建一个结构,但实际上并未将其添加到数组中。

如果您使用向量而不是数组,则使用push_back()将每个记录添加到向量中,实际上是您尝试做的事情更加轻松,整洁。这是与您所指的“动态调整大小的数组”最接近的东西(这种东西实际上在C ++中并不存在,这就是向量的用途等等)。

请查看以这种方式进行的操作,如果您遇到困难,请随时询问,乐意为您提供帮助。