mfc 用CArchive读取文件中的所有对象,不知长度,可以依次读出来么?
我是这么做的,只能在listctr中显示第一个对象的数据while(file.GetPosition()!=file.GetLength()){inti=0;Ctongx...
我是这么做的,只能在listctr中显示第一个对象的数据
while(file.GetPosition ()!=file.GetLength())
{
int i=0;
Ctongxu *pCtongxu= new Ctongxu;
pCtongxu->Serialize(ar);
m_listctr.InsertItem(i,pCtongxu->name);
wchar_t chr[10]={0};
_itow(pCtongxu->old,chr,10);
m_listctr.SetItemText (i,1,chr);
delete pCtongxu;
i++;
}
其中:void Ctongxu::Serialize (CArchive& ar)
{
if(ar.IsStoring())
{
ar<<name;
ar<<old;
}
else
{
ar>>name;
ar>>old;
}
}
请问我应该怎么正确读取才能实现啊? 展开
while(file.GetPosition ()!=file.GetLength())
{
int i=0;
Ctongxu *pCtongxu= new Ctongxu;
pCtongxu->Serialize(ar);
m_listctr.InsertItem(i,pCtongxu->name);
wchar_t chr[10]={0};
_itow(pCtongxu->old,chr,10);
m_listctr.SetItemText (i,1,chr);
delete pCtongxu;
i++;
}
其中:void Ctongxu::Serialize (CArchive& ar)
{
if(ar.IsStoring())
{
ar<<name;
ar<<old;
}
else
{
ar>>name;
ar>>old;
}
}
请问我应该怎么正确读取才能实现啊? 展开
3个回答
展开全部
用vector 或者链表装
动态数组也行
打开文件后 将指针定位到文件尾部
然后获得文件长度 ,就可以动态申请动态数组用来装了
不过建议你还是用比较方便的 vector 或者 链表
这里是我的例子 动态读取未知大小文件
http://hi.baidu.com/%B2%D7%BA%A3%D0%DB%B7%E72009/blog/item/1a6cdc300a4e045aac4b5fa7.html
动态数组也行
打开文件后 将指针定位到文件尾部
然后获得文件长度 ,就可以动态申请动态数组用来装了
不过建议你还是用比较方便的 vector 或者 链表
这里是我的例子 动态读取未知大小文件
http://hi.baidu.com/%B2%D7%BA%A3%D0%DB%B7%E72009/blog/item/1a6cdc300a4e045aac4b5fa7.html
展开全部
在msdn中,有这么一句话
You may not use CFile operations to alter the state of the file until you have closed the archive. Any such operation will damage the integrity of the archive. You may access the position of the file pointer at any time during serialization by obtaining the archive’s file object from the GetFile member function and then using the CFile::GetPosition function. You should call CArchive::Flush before obtaining the position of the file pointer.
意思是说,你在使用CArchive时就不能使用CFile里的函数,如果要GetPosition,就先CArchive::Flush,使用CArchive的GetFile再GetPosition。
You may not use CFile operations to alter the state of the file until you have closed the archive. Any such operation will damage the integrity of the archive. You may access the position of the file pointer at any time during serialization by obtaining the archive’s file object from the GetFile member function and then using the CFile::GetPosition function. You should call CArchive::Flush before obtaining the position of the file pointer.
意思是说,你在使用CArchive时就不能使用CFile里的函数,如果要GetPosition,就先CArchive::Flush,使用CArchive的GetFile再GetPosition。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询