首页 > 解决方案 > 如何在 MFC 中使用相同的序列化方法将信息保存在两个文件中

问题描述

单击如下所示的按钮后,我试图将信息保存在 2 个文件中,但它正在创建大小为 0KB 的文件 2。两个文件都已创建,但 file1 有内容,但 file2 没有内容0kB 大小。请让我知道我在做什么错误,并让我知道是否有更好的程序使用 MFC 中的序列化方法将信息存储在两个文件中:

   void CMFCserializedemoDlg::OnBnClickedButton2()
    {
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
        CEmployee employee;
        CFile file;
        file.Open(L"EmployeeInfo.hse", CFile::modeCreate | CFile::modeWrite);
        CArchive ar(&file, CArchive::store);
        employee.empID = m_EmployeeId;
        employee.empName = m_EmployeeName;
        employee.age = m_EmployeeAge;
        employee.Serialize(ar);
        ar.Close();
        CFile file2;
        file2.Open(L"EmployeeInfo1.hse", CFile::modeCreate | CFile::modeWrite);
        CArchive ar1(&file, CArchive::store);
        employee.empID = m_EmployeeId;
        employee.empName = m_EmployeeName;
        employee.age = m_EmployeeAge;
        employee.Serialize(ar1);
        ar1.Close();
    }
    void CEmployee::Serialize(CArchive& ar) {
        CObject::Serialize(ar);

        if (ar.IsStoring())
            ar << empID << empName << age;
        else
            ar >> empID >> empName >> age;
    }
//
class CEmployee : public CObject
{
public:
    int empID;
    CString empName;
    int age;
    CEmployee(void);
    ~CEmployee(void);
private:

public:
    void Serialize(CArchive& ar);
    DECLARE_SERIAL(CEmployee);
};

标签: mfc

解决方案


你有:

CFile file2;
file2.Open(L"EmployeeInfo1.hse", CFile::modeCreate | CFile::modeWrite);
CArchive ar1(&file, CArchive::store);

请注意,您传递的是地址而file不是变量。这应该是:file2ar1

CArchive ar1(&file2, CArchive::store);

这就是原因。


推荐阅读