将记录加载到动态数组中

时间:2015-08-07 11:05:11

标签: c++ arrays dynamic getline

我正在尝试将文本文件中的大量记录加载到动态数组中。

记录以逗号分隔

例如:迷路,猫,女,波斯,0 3,黑色

这是我到目前为止所做的:

struct Pet{

      char status[6];
      char petType[4];
      ...
}

void loadRecords(char * filename, Pet * petPointer, int count){

      ifstream fin;
      Pet* petPointer = new Pet[count];

      fin.open(filename); 

      for (int i = 0; i < count; i++)
      {
           while (fin.good())
           {
                getline(fin, petPointer->status[i], ',');
                ...
           }
      }
}

这将返回错误“没有重载函数的实例”getline“匹配参数列表”

将这些记录加载到数组中的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您正在将字符串用作数组,并将数组用作指针。这是有效的,因为字符串是数组,数组是指针,但它不是你想要的。 你应该这样做:

getline(fin, petPointer[i].status,  ',');

将数组称为指针(petPoitner)会让人感到困惑。它是一个指针,因为它是一个数组,但您打算将它用作数组。

如果你想以酷c的方式使用指针,你可以这样做:

Pet* pets = new Pet[count];
Pet* iter = pets;

while(...){
    getline(fin, iter->status);
    iter++;
}

无论哪种方式,在这两种方式中,你可能仍然应该检查插入的内容多于为内存保留的内容。