串行化;Serialize(CArchive& ar)的使用;ar.IsStoring()用法


举例:
/************************************************************************/
/* 重载串行化函数                                                       */
/* 功能:确定归档文件是否被存储                                         */
/************************************************************************/
void CMsg::Serialize(CArchive& ar)
{
//读入
if (ar.IsStoring())
{
ar<<(WORD)m_bClose;
ar<<m_strText;
ar<<code;
//输出
else
{
WORD wd;
        ar>>wd;
m_bClose = (BOOL)wd;
ar>>m_strText;
ar>>(UINT)code;
}
}//void CMsg::Serialize(CArchive& ar)
//
CArchive::IsStoring
BOOL IsStorng( ) const;
返回值:
如果正在存储归档文件,则返回非零值,否则为0。
说明:
确定是否正在存储归档文件。这个函数由归档文件类的Serialize函数调用。
如果归档文件的IsStoring状态为非零,则它的IsLoading状态为0,反之亦然。
示例:
int i;
extern CArchive ar;
if(ar.IsStoring( )) ar<

else ar>>i;
//
CObject::Serialize
virtual void Serialize( CArchive& ar );    throw( CMemoryException );    throw( CArchiveException );    throw( CFileException );    参数: ar 被串行化的CArchive对象。      说明:  从档案文件中读取该对象或向档案文件中写入该对象。  必须为希望串行化的每个类覆盖Serialize。被覆盖的Serialize首先必须调用基类的Serialize函数。  在类的声明中必须使用DECLARE_SERIAL宏,并且在类的执行过程中也必须使用IMPLEMENT_SERIAL宏。  使用CArchive::IsLoading或CArchive::IsStoring函数,用于决定是否装载或存储了档案文件。  通过CArchive::ReadObject和CArchive::WriteObject来调用Serialize函数。这些函数与CArchive插入操作符(<<)和抽出操作符(>>)相关联。  如果要了解有关串行化的例子,请参阅联机文档“Visual C++程序员指南” 中的“串行化(对象永久化)”。    示例:请参阅ObList::CObList,了解所有CObject示例中使用的CAge类。  // example for CObject::Serialize  void CAge::Serialize( CArchive& ar )  {    CObject::Serialize( ar );    if( ar.IsStoring() ) ar << m_years;    else ar >> m_years;  } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值