如何将值赋给指向结构的固定指针数组

时间:2013-12-20 12:16:41

标签: c++

我正在尝试创建一个动态大小的结构数组,并尝试为每个结构分配值。我知道我可以使用vector来轻松解决这个问题,但我这样做是为了学习C ++的基础以及它在核心的实际运作方式。

本案例中的结构是

struct car
{
        std::string make;
        int year;
};

然后在main()函数中,我有:

car* cars[catSize];
for (int i = 0; i < catSize; ++i)
{
     cars[i] = new car
     cout << "Enter the make for car " << i << ": ";
     char ch;
     string tempMake = "";
     cin.get(ch);
     while(ch != '\n')
     {
           tempMake += ch;
           cin.get(ch);
     }

     cars[i]->make = tempMake;
     cout << "Enter the year of car # " << i << ": ";
     cin >> cars[i]->year;
}

运行以上操作后,在输入make并按Enter键后立即给出了分段错误。有人可以帮助解释发生了什么吗?

1 个答案:

答案 0 :(得分:3)

看来,在输入数组大小后,'\n'会停留在输入缓冲区中并干扰进一步的输入。

此外,您应该catSize为常量,因为所有编译器都不支持VLAs

如果您仍想使用VLA,则应在读取数组大小后添加cin.ignore();

另外,你应该注意到,目前它不是你问题中所述的动态结构数组,而是固定的结构指针数组