MFC中的序列化(Serialize)如何使用?百分相送

这个网站不安全啊 2003-12-10 11:03:03
各位大侠:
请问如何通过序列化把内存中的数据(可能是类的数据或是结构)保存成文件?
这里小弟谢谢先了。
告诉小弟的一定高分相送,需要提供代码
...全文
207 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我已经解决问题了。不过可以开始想的太简单了,以为只要调用一下类的Serialize函数就好使,但事实上是不可以了。要重载每一个函数,并把自己类中要保存的项输入进去。

不过还是要感谢各位的参与,每人都有分.
patient 2003-12-10
  • 打赏
  • 举报
回复
remark
Goldcastle 2003-12-10
  • 打赏
  • 举报
回复
把你的类从CObject继承,重载virtual void Serialize(CArchive& ar);//文档串形化函数,在里面存、读类的数据,
if(ar.IsStoring())
{
ar<<m_LineWide<<m_LineType<<m_Layer<<m_id_only;
}
else
{
ar>>m_LineWide>>m_LineType>>m_Layer>>m_id_only;
}
在存储或读取时调用。
如你的程序是基于MFC Document的,在XXXDoc类中重载virtual void Serialize(CArchive& ar),在里面调用类的Serialize函数。一切就这么简单!
bluebohe 2003-12-10
  • 打赏
  • 举报
回复
首先你内存中的数据应该在文档类中
然后你可以在Serialize中串行化你的数据
void CSDIDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here

ar << m_strData;

}
else
{
// TODO: add loading code here
ar >> m_strData;

}
}

seilfer2000 2003-12-10
  • 打赏
  • 举报
回复
void CStudent::Serialize(CArchive& ar)
{
TRACE("Entering CStudent::Serialize\n");
if (ar.IsStoring()) {
ar << m_strName << m_nGrade;
}
else {
ar >> m_strName >> m_nGrade;
}
}
响应这个函数就行了
bluesmile979 2003-12-10
  • 打赏
  • 举报
回复
就是把数据的输入或者输出定位到文件

至于数据结构存储的时候应该不考虑进行存储的。存储一般只是对数据来说。你自己在程序里面保证按一定的顺序存数据。然后读的时候按相应的顺序还原的数据结构。这根存储没关系,实际还是你的程序逻辑问题
ISunwu 2003-12-10
  • 打赏
  • 举报
回复
void CTest1113Dlg::OnButtonSave()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_strData.IsEmpty())
{
MessageBox("请输入数据后在保存!");
return ;
}

CFile file;
file.Open("c:\\test.txt", CFile::modeCreate | CFile::modeWrite);
CArchive ar(&file, CArchive::store);
ar << m_strData;
ar.Close();
file.Close();

MessageBox("输入已存入c:\\test.txt!");
}

void CTest1113Dlg::OnButtonLoad()
{
// TODO: Add your control notification handler code here
CFile file;
if(!file.Open("c:\\test.txt", CFile::modeRead))
{
MessageBox("打开文件C:\\test.txt失败!");
return ;
}

CArchive ar(&file, CArchive::load);
ar >> m_strData;
ar.Close();
file.Close();

UpdateData(FALSE);
}
  • 打赏
  • 举报
回复
对了,还有如何读取已存的序列化文件。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧