Здравствуйте, Fedor Sumkin, Вы писали:
FS>Да, данный способ верен для POD-типов и хорош тем что не надо задумываться о внутреннем устройстве структуры/класса — единственное, что нужно использовать — массивы вместо указателей. Также, его можно легко расширить, добавив дополнительные данные в структуру и ничего не поломается(если нет необходимости в поддержке совместимости со старыми форматами файлов где хранится информация). В рамках поставленной задачи — самое разумное решение в 30-50 строк. Ну и что, что файл может стать большим — чем-то приходится жертвовать.
FS>Раз кто-то усомнился в том что так можно(а минусов-то понаставили
) — привожу полный код решения.
vector <Person> pers;
pers.push_back(Person);
ofstream out ("E:\\file1.txt", ios::binary);
int size = pers.size();
out.write((char*)(&size), 4);
out.write((char*)&pers[0], pers.size()*sizeof(Person));
out.close();}
Вот в pers.push_back(Person); что именно из елементов нужно писать?...Чтобы весь класс сохранить в нем.
class Person{
public:
Person(){}
~Person(){}
string GetFamiliya(){ return persFamiliya;}
string GetName(){ return persName;}
string GetData(){ return persData;}
string GetTelefon(){ return persTelefon;}
void SetFamiliya(string fam){ persFamiliya=fam;}
void SetName(string name){ persName=name;}
void SetData(string data){ persData=data;}
void SetTelefon(string tel){ persTelefon=tel;}
void Print();
private:
string persFamiliya;
string persName;
string persData;
string persTelefon;
};