序列化的概念问题,请指教...... 序列化是为了方便存贮,减小电脑硬件的读取次数,是为了提高速度,并不能保存数据,当程序关闭和打开时,数据都无法还原的,若要真的保存数据就需要保存到文件中,它可以理解成数据存入文件的中间的一个缓存么?具体怎么实现通过序列化将数据写入文件的?请给出相应代码,最好写上注释......谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 序列化不是缓冲,而是一种把任意数据转换成线性排列的过程,序列化的过程需要一个载体执行具体的操作,文件是一种典型的持久性线性存储载体,也可以把内存缓冲区作为载体。通常情况下,MFC中的序列化需要提供一个CArchiev作为序列化的参数,而这个参数往往跟文件相关联,当然你也可以让它跟别的载体关联。 序列化是一个过程,不是缓存,是把CObject(或其派生类)对象中的数据,保存到一个CArchive对象中,或者从一个CArchive对象中读取数据。在构造CArchive对象时,需要提供一个CFile类对象,如果该对象打开的是一个文件,就是存取这个文件。具体是储存还是读取,是由CArchive对象指定的。序列化的过程,也就是存取的数据和顺序,是由被序列化的类决定的,调用CArchive类中的读写函数来实现。 我能这么理解么:序列化需要用到"数据"和"载体",数据就是由CArchive对象提供(之前将数据保存到了CArchive对象中),载体就是构造CArchive对象时提供的那个CFile类对象来决定(如文件).所以调用CObject::Serialize(ar) 序列化是为了方便存贮,减小电脑硬件的读取次数,是为了提高速度,并不能保存数据 <- 误导序列化是数据在 内存变量 和 载体 之间进行有序传递的过程载体可以是文件(包括端口,磁盘文件,内存映射文件等等),也可以是流(COM),接口等有序传递是一次性的,每一次的序列化操作要么读取全部变量,要么存储全部变量,文件指针的位置从0到文件末尾,是不可逆的过程;同样变量的读取或存储的顺序也是相同且唯一的.如果一个对象提供了一个函数能实现上述功能,则该对象就是可序列化的 如果一个对象提供了一个函数能实现上述功能,则该对象就是可序列化的.是指CObject::Serialize么?(请问6楼的) 那CArchive对象是告诉序列化函数“数据”和“载体”的作用么? CArchive是序列化的一座桥梁,在MFC的默认实现中,它是跟文件绑定的,桥是通向文件的,相当于载体是文件,你能继承这个类来绑定其他类型的载体 内存映射文件的问题 delete 出错 怎么接收不到信息呢? win32 application 如何实现工具栏的停靠 怎么才能下到DirectX 9.0c 的 SDK? Windows 2000下如何屏蔽Ctrl+Alt+Del????? 为什么我下载的Xvid的源代码总是编译不过去? 如何用VC++打开以前带有*.mak的文件! 一个网恋者的疑惑(不好意思又发了,因为我觉得还有话要说) GetModuleFileName 获取程序全路径没有扩展名 点运行后VC不能运行可执行程序 动态创建弹出菜成功,但之后出现程序崩溃
通常情况下,MFC中的序列化需要提供一个CArchiev作为序列化的参数,而这个参数往往跟文件相关联,当然你也可以让它跟别的载体关联。
在构造CArchive对象时,需要提供一个CFile类对象,如果该对象打开的是一个文件,就是存取这个文件。具体是储存还是读取,是由CArchive对象指定的。序列化的过程,也就是存取的数据和顺序,是由被序列化的类决定的,调用CArchive类中的读写函数来实现。
序列化需要用到"数据"和"载体",数据就是由CArchive对象提供(之前将数据保存到了CArchive对象中),载体就是构造CArchive对象时提供的那个CFile类对象来决定(如文件).所以调用CObject::Serialize(ar)
有序传递是一次性的,每一次的序列化操作要么读取全部变量,要么存储全部变量,文件指针的位置从0到文件末尾,是不可逆的过程;同样变量的读取或存储的顺序也是相同且唯一的.如果一个对象提供了一个函数能实现上述功能,则该对象就是可序列化的
是指CObject::Serialize么?(请问6楼的)