我有一个动态调整大小的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;
}
}
答案 0 :(得分:1)
在您的代码中,变量rec
与数组无关。要访问数组位置i
处的元素,您需要使用a[i]
。
例如:
cin >> a[i].name;
或
cout << "\n" << a[i].name << " " << a[i].age;
答案 1 :(得分:0)
毫不奇怪-您实际上是在重复打印您创建的最后一条记录(rec)。您的最后一个循环实际上没有遍历数组。
此外,第一个循环仅创建一个结构,但实际上并未将其添加到数组中。
如果您使用向量而不是数组,则使用push_back()将每个记录添加到向量中,实际上是您尝试做的事情更加轻松,整洁。这是与您所指的“动态调整大小的数组”最接近的东西(这种东西实际上在C ++中并不存在,这就是向量的用途等等)。
请查看以这种方式进行的操作,如果您遇到困难,请随时询问,乐意为您提供帮助。