我正在尝试将文本文件中的大量记录加载到动态数组中。
记录以逗号分隔
例如:迷路,猫,女,波斯,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“匹配参数列表”
将这些记录加载到数组中的最佳方法是什么?
答案 0 :(得分:0)
您正在将字符串用作数组,并将数组用作指针。这是有效的,因为字符串是数组,数组是指针,但它不是你想要的。 你应该这样做:
getline(fin, petPointer[i].status, ',');
将数组称为指针(petPoitner
)会让人感到困惑。它是一个指针,因为它是一个数组,但您打算将它用作数组。
如果你想以酷c
的方式使用指针,你可以这样做:
Pet* pets = new Pet[count];
Pet* iter = pets;
while(...){
getline(fin, iter->status);
iter++;
}
无论哪种方式,在这两种方式中,你可能仍然应该检查插入的内容多于为内存保留的内容。