Чтение бинарного файла который содержит обьекты класса до конца
Есть класс info , у него есть методы read и write , как считывать данные с файла используя эти методы до конца в фукции main?
class info{
public:
string PIB;
int dd;
int mm;
int yy;
char gender;
void print() {
cout << "ПІБ - " << PIB << endl;
cout << "Число народження - " << dd << endl;
cout << "Місяць народження - " << mm << endl;
cout << "Рік народження - " << yy << endl;
cout << "Пол - " << gender << endl;
}
void enter() {
cin >> PIB >> dd >> mm >> yy >> gender;
}
void write(ostream& os)
{
os.write((char*)&dd, sizeof(dd));
os.write((char*)&mm, sizeof(mm));
os.write((char*)&yy, sizeof(yy));
os.write((char*)&gender, sizeof(gender));
size_t len = PIB.length() + 1;
os.write((char*)&len, sizeof(len));
os.write((char*)PIB.c_str(), len);
}
void read(istream& in)
{
in.read((char*)&dd, sizeof(dd));
in.read((char*)&mm, sizeof(mm));
in.read((char*)&yy, sizeof(yy));
in.read((char*)&gender, sizeof(gender));
size_t len;
in.read((char*)&len, sizeof(len));
char* buf = new char[len];
in.read(buf, len);
PIB = buf;
delete[]buf;
}
};
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Замените void read(istream& in) на
istream& read(istream& in)
и в помледней строке функции напишите
return in;
Тогда чтение до конца будет выглядеть как-то так:
for(info i; i.read();) {
// Делаем с i что надо
}