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;
}

}
请问我应该怎么正确读取才能实现啊?
展开
 我来答
沧海雄风2009
2012-03-20 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2869万
展开全部
用vector 或者链表装

动态数组也行

打开文件后 将指针定位到文件尾部

然后获得文件长度 ,就可以动态申请动态数组用来装了

不过建议你还是用比较方便的 vector 或者 链表

这里是我的例子 动态读取未知大小文件

http://hi.baidu.com/%B2%D7%BA%A3%D0%DB%B7%E72009/blog/item/1a6cdc300a4e045aac4b5fa7.html
dukang9904455
2012-03-24 · TA获得超过811个赞
知道小有建树答主
回答量:1028
采纳率:0%
帮助的人:947万
展开全部
在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。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丹磁and小狮子
2012-03-31
知道答主
回答量:27
采纳率:0%
帮助的人:4.2万
展开全部
一个一个读
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式