用C++动态数组读取对象

用C++动态数组读取对象,c++,arrays,dynamic-memory-allocation,file-handling,object-oriented-analysis,C++,Arrays,Dynamic Memory Allocation,File Handling,Object Oriented Analysis,我试图读取我的病例患者中的object文件,并对它们进行动态数组。 我使用计数器对文件中存储的对象进行计数,并根据计数器大小创建一个数组。 我的问题是,作为输出,我多次只得到存储在文件中的最后一项。例如,如果我的计数器为6,则输出是存储在文件中的最后一项的6倍 void patient::read_patient_DB() { int counter = 0; fstream fp; patient p; cout << "\n\n

我试图读取我的病例患者中的object文件,并对它们进行动态数组。 我使用计数器对文件中存储的对象进行计数,并根据计数器大小创建一个数组。 我的问题是,作为输出,我多次只得到存储在文件中的最后一项。例如,如果我的计数器为6,则输出是存储在文件中的最后一项的6倍


  void patient::read_patient_DB()
    {   int counter = 0;
       fstream fp;
      patient p;
    cout << "\n\n\n\t\tDISPLAY ALL RECORD !!!\n\n";
    fp.open("patient.dat", ios:: in );
    while (fp.read((char *) & p, sizeof(patient)))
    {
        counter++;


    }
    cout<<"----The out patient group has ["<<counter<<"] data recorded----"<<endl;
    patient * pointer = new patient[counter];
    for(int i = 0;i <counter;i++)
    {
      pointer[i] = p;
     pointer[i].preview();

    }


    delete [] pointer;
    fp.close();

    }
我的问题是,作为一个output,我只得到了我多次存储在文件中的最后一项

考虑到您从未在每个指针[i]=p之间修改p,这是有意义的。您需要这样做:

while(read_from_file(p)) {
    pointer[i++] = p;
}

在C++中,动态数组被拼写为STD::vector。有了它,您就不需要事先统计记录了所以你把数组中的每个值都设置为相同的p,你想知道为什么数组中的每个值都是相同的?这就是你要问的吗?