C++ 将记录加载到动态数组中
我正在尝试将文本文件中的许多记录加载到动态数组中 记录之间用逗号分隔 例如:迷失,猫,母,波斯,03,黑色 这就是我到目前为止所做的:C++ 将记录加载到动态数组中,c++,arrays,dynamic,getline,C++,Arrays,Dynamic,Getline,我正在尝试将文本文件中的许多记录加载到动态数组中 记录之间用逗号分隔 例如:迷失,猫,母,波斯,03,黑色 这就是我到目前为止所做的: struct Pet{ char status[6]; char petType[4]; ... } void loadRecords(char * filename, Pet * petPointer, int count){ ifstream fin; Pet* petPointer = ne
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], ',');
...
}
}
}
struct-Pet{
字符状态[6];
char-petType[4];
...
}
无效加载记录(char*文件名、Pet*petPointer、int计数){
流鳍;
宠物*宠物指针=新宠物[计数];
打开(文件名);
for(int i=0;istatus[i],',';
...
}
}
}
这将返回错误“没有重载函数“getline”的实例与参数列表匹配”
将这些记录加载到数组中的最佳方法是什么?您将字符串用作数组,数组用作指针。这是有效的,因为字符串是数组,数组是指针,但这不是您想要的。 您应该这样做:
getline(fin, petPointer[i].status, ',');
将数组称为指针(petPoitner
)有点让人困惑。它是一个指针,因为它是一个数组,但您打算将其用作数组
如果您想以酷c
的方式使用指针,可以执行以下操作:
Pet* pets = new Pet[count];
Pet* iter = pets;
while(...){
getline(fin, iter->status);
iter++;
}
无论是哪种方式,在这两种方式中,您可能仍然应该检查插入的内存是否超过了保留的内存。使用#include
并使用std::
作为前缀。