C++ c++;从具有数组属性的文件中读取对象
我有一个类,我想将对象读入一个对象数组,但我的类的属性有问题(长数据[4];)。我不知道该怎么读。在Read方法中,我希望从文件中读取所有属性,同时创建数据元素的向量,并将从文件中读取的向量附加到构造函数中C++ c++;从具有数组属性的文件中读取对象,c++,oop,C++,Oop,我有一个类,我想将对象读入一个对象数组,但我的类的属性有问题(长数据[4];)。我不知道该怎么读。在Read方法中,我希望从文件中读取所有属性,同时创建数据元素的向量,并将从文件中读取的向量附加到构造函数中 //Class: class Utilitati{ const int id; float PretUtilitati; char * NumeUtilitati; int Numarachizitii; long data[4]; --This i
//Class:
class Utilitati{
const int id;
float PretUtilitati;
char * NumeUtilitati;
int Numarachizitii;
long data[4]; --This is the problem( I dont know how can i read it )
//Constructor:
Utilitati(float PretUtilitati, char * NumeUtilitati, int Numarachizitii, long data[]) :id(3){
this->PretUtilitati = PretUtilitati;
this->NumeUtilitati = new char[strlen(NumeUtilitati) + 1];
strcpy(this->NumeUtilitati, NumeUtilitati);
this->Numarachizitii = Numarachizitii;
for (int i = 0; i < Numarachizitii; i++)
this->data[i] = data[i];
}
Data must be a vector from file.
//Read Method:
void citireFisier(char *numeFisier, Utilitati ** vectUtilitati)
{
FILE* file = fopen(numeFisier, "r+");
if (!file)
cout << "\nEroare citire!" << endl;
else
{
int contor = 0;
float PretUtilitati;
char NumeUtilitati[20];
int Numarachizitii;
long data[4];
while (!feof(file))
{
fscanf(file, "%f%s%i%l", &PretUtilitati, &NumeUtilitati, &Numarachizitii, &data);
Utilitati* NewUtilitati = new Utilitati(PretUtilitati, NumeUtilitati, Numarachizitii,data);
vectUtilitati[contor++] = NewUtilitati;
}
}
}
如果您的
数据
是固定的且长度始终为4,则可以在fscanf
模式中重复%ld
(长格式说明符)四次
fscanf(file, "%f%s%i%ld%ld%ld%ld",
&PretUtilitati, &NumeUtilitati, &Numarachizitii,
&data[0], &data[1], &data[2], &data[3]);
如果它不是固定长度,您应该首先读取它的长度,然后使用循环fscanf
它的条目
fscanf(file, "%f%s%i%ld%ld%ld%ld",
&PretUtilitati, &NumeUtilitati, &Numarachizitii,
&data[0], &data[1], &data[2], &data[3]);