mfc - 如何在 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);
};
解决方案
你有:
CFile file2;
file2.Open(L"EmployeeInfo1.hse", CFile::modeCreate | CFile::modeWrite);
CArchive ar1(&file, CArchive::store);
请注意,您传递的是地址而file
不是变量。这应该是:file2
ar1
CArchive ar1(&file2, CArchive::store);
这就是原因。
推荐阅读
- ios - iOS 上的 Firebase AppCheck:403 权限错误 - PERMISSION_DENIED
- java - 易失性变量读取行为
- python - 给定一个 geotiff 文件,如何找到最接近给定纬度/经度的单个像素?
- android - 如何私下部署 React Native (expo) 应用程序?
- html - 页脚出现在 div 的顶部 | ASP.NET
- ruby-on-rails - 如何有条件地在苗条中添加一个div
- ios - 为什么有 Xcode12.4/12.5,iOS 标准架构是 arm64 和 armv7,但使用任何 iOS 设备 (arm64) 存档?
- object - 当我在 django 中将它用作表单中的下拉列表时,我的 ForeignKey 显示为模型对象
- r - 如何遍历数据框并在 R 中运行回归?
- spring-boot - Wildfly 11.0.0 最终版 java.lang.OutOfMemoryError:元空间