Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将记录加载到动态数组中_C++_Arrays_Dynamic_Getline - Fatal编程技术网

C++ 将记录加载到动态数组中

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

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

记录之间用逗号分隔

例如:迷失,猫,母,波斯,03,黑色

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

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::
作为前缀。