//写文件
void CMainFrame::OnCarchiveWrite()
{
// TODO: 在此添加命令处理程序代码
/*
a) 创建文件对象 CFile
b) 以写方式打开文件 CFile::Open
c) 创建序列化对象,并且和文件关联在一起 CArchive
CArchive::store 把数据保存到归档文件中。允许CFile写操作。
d) 往数据流写数据(相当于往文件写数据)
ar << a << b << c
e) 断开数据流和文件的关联 CArchive::Close
f) 关闭文件 CFile::Close
*/
CFile file;
BOOL isOk = file.Open(TEXT("../demo.txt"), CFile::modeCreate | CFile::modeWrite);
if (isOk == FALSE)
{
return;
}
//和CArchive管理
//CArchive对象是数据流,文件和CArchive绑定一起,
//store: 存储,写
CArchive ar(&file, CArchive::store);
//和cout用法一样
int a = 10;
CString str = TEXT("ABC");
TCHAR ch = 't';
//箭头代表流向
//数据流向ar, ar指向文件
ar << a << str << ch;
ar.Close(); //断开数据流和文件的关联
file.Close();
}
//读文件
void CMainFrame::OnCarchiveRead()
{
// TODO: 在此添加命令处理程序代码
CFile file;
BOOL isOk = file.Open(TEXT("../demo.txt"), CFile::modeRead);
if (isOk == FALSE)
{
return;
}
//和CArchive管理
//CArchive对象是数据流,文件和CArchive绑定一起,
//load: 加载,读
CArchive ar(&file, CArchive::load);
//和cout用法一样
int a;
CString str;
TCHAR ch;
//箭头代表流向
// ar指向文件, 数据流 -> 变量
ar >> a >> str >> ch;
CString buf;
buf.Format(TEXT("%d, %s, %c"), a, str, ch);
MessageBox(buf);
ar.Close(); //断开数据流和文件的关联
file.Close();
}
参考:
https://www.bilibili.com/video/BV1jb411M78M?p=76