每周完成一个ARTS:
每周至少做一个LeetCode的算法题,阅读和点评至少一篇文本技术文章,学习至少一个技术技巧,分享一篇有观点和思考的技术文章(也就是Algorithm ,Review ,Tip,Share 简称ARTS)需要坚持至少一年。
三、Tip
MFC-序列化(Serialization)
程序效果:
CEmployee.h
#pragma once
// CEmployee 命令目标
class CEmployee : public CObject
{
public:
CEmployee();
int empID;
CString empName;
int age;
virtual ~CEmployee();
public:
void Serialize(CArchive& ar);
DECLARE_SERIAL(CEmployee);
};
Employee.cpp
// Employee.cpp : 实现文件
//
#include "stdafx.h"
#include "MFCSerialization.h"
#include "Employee.h"
// CEmployee
IMPLEMENT_SERIAL(CEmployee, CObject, 0);
CEmployee::CEmployee()
{
}
CEmployee::~CEmployee()
{
}
void CEmployee::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if (ar.IsStoring())
{
ar << empID << empName << age;
}
else
{
ar >> empID >> empName >> age;
}
}
// CEmployee 成员函数
CMFCSerializationDlg.h
添加的变量:
public:
afx_msg void OnBnClickedButtonSave();
int m_EmpId;
CString m_strName;
int m_age;
afx_msg void OnBnClickedButtonOpen();
CString m_Filename;
CMFCSerializationDlg.cpp
两个Button按钮函数的实现:
void CMFCSerializationDlg::OnBnClickedButtonSave()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CEmployee employee;
CFile file;
file.Open(m_Filename, CFile::modeCreate | CFile::modeWrite);
CArchive ar(&file, CArchive::store);
employee.empID = m_EmpId;
employee.empName = m_strName;
employee.age = m_age;
employee.Serialize(ar);
ar.Close();
}
void CMFCSerializationDlg::OnBnClickedButtonOpen()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CFile file;
file.Open(m_Filename, CFile::modeRead);
CArchive ar(&file, CArchive::load);
CEmployee employee;
employee.Serialize(ar);
m_EmpId = employee.empID;
m_strName = employee.empName;
m_age = employee.age;
ar.Close();
UpdateData(FALSE);
}
四、Share
关于如何识别平面内封闭区间的问题(ue4,c++)
问题描述:通过鼠标在平面上不断点击会得到一个线段集合S,编写一个算法,识别出其中的每一个不可分割的小的封闭区域S(i),输出每一个小区域的点集合(顺或者逆时针)。
链接:https://blog.csdn.net/qq_22824481/article/details/66477426