CStringList 写入文件 CStringList链表如何写入到本地文件中?冉在这里了。麻烦最好给个写的例子或示范。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CStringList支持序列化,用序列化保存文件是最简单的了。 下面是我写的一个函数用来保存。 m_descList 就是CStringList类函数,使用file的write写吗?如果是。怎么写?CFile fp;CFileException exc; if(!fp.Open((LPCSTR)("c:\\1.dat"),CFile::modeCreate|CFile::modeWrite,&exc)) { CArchive ar(&fp,CArchive::store); m_descList.Serialize(ar); //fp.Write(&m_descList,); ar.Close(); } CStringList strList; // 假设有数据了CFile theFile;theFile.Open(_T("d:\\stringlist.txt"), CFile::modeCreate | CFile::modeWrite);CArchive archive(&theFile, CArchive::store);archive << strList; // <----- 数据存文件,或者 strList.Serialize(archive);CFile theFile;theFile.Open(_T("d:\\stringlist.txt"), CFile::modeRead);CArchive archive(&theFile, CArchive::load);archive >> strList; // <----- 从文件读取数据,或者 strList.Serialize(archive); 是要分行写吗?用CFile::Write可以将内容写入文件一个个的取得CStringList中的字符串,存在临时变量strLine中,然后CFile fTarget;fTarget.Open(...) //打开你要操作的文件for(循环CStringList中的字符串){ fTarget.Write(strLine.GetBuffer(strLine.GetLength),strLine.GetLength());}fTarget.Close(); 回复 jameshooo: if(fp.Open(("c:\\1.dat"),CFile::modeCreate|CFile::modeWrite,&exc)) { CArchive ar(&fp,CArchive::store); m_descList.Serialize(ar); ar.Close(); }我是这么写的。但是跟内容不全。不知道怎么回事。少了些东西 可以确定。读入时候文件大小事60k.写到另一文件里变成35k了。少了很多会不会和我的这些代码有关系m_descList.InsertBefore(pos,csDesc); m_descList.RemoveAt(pos);实现功能是修改此节点下的内容。csDesc 为新内容。。是不是这里错了? 你确定只序列化了一个CStringList?最好在保存前以及读取后TRACE一下,看看CStringList的内容是否符合要求。 我的vs2005 archive << strList 提示有错 strList.Serialize(archive);这个OK! 这段代码vs2005编译出来执行速度远远低于vc6编译的 ODBC 数据库内容显示在编辑框中 画直线的问题 打听一下,浙江大华技术股份有限公司相关情况 激动!!`小弟第一次发现这样也会造成内存泄漏! m_bIsInit = TRUE;什么意思? 关于CRecordSet中的Open 请问在程序中,如何将打开的所有文档关闭. 在MDI程序的应用类中如何得到当前子窗口的关联文档指针? 【求助】让对话框和控件大小适应不同分辨率 如何设计一个类用于存放数据 将BSTR类型的数据转换为char*类型,数据丢失,请问改如何转换?
CFileException exc;
if(!fp.Open((LPCSTR)("c:\\1.dat"),CFile::modeCreate|CFile::modeWrite,&exc))
{
CArchive ar(&fp,CArchive::store);
m_descList.Serialize(ar); //fp.Write(&m_descList,);
ar.Close();
}
CStringList strList; // 假设有数据了
CFile theFile;
theFile.Open(_T("d:\\stringlist.txt"), CFile::modeCreate | CFile::modeWrite);
CArchive archive(&theFile, CArchive::store);
archive << strList; // <----- 数据存文件,或者 strList.Serialize(archive);CFile theFile;
theFile.Open(_T("d:\\stringlist.txt"), CFile::modeRead);
CArchive archive(&theFile, CArchive::load);
archive >> strList; // <----- 从文件读取数据,或者 strList.Serialize(archive);
然后
CFile fTarget;
fTarget.Open(...) //打开你要操作的文件
for(循环CStringList中的字符串)
{
fTarget.Write(strLine.GetBuffer(strLine.GetLength),strLine.GetLength());
}
fTarget.Close();
if(fp.Open(("c:\\1.dat"),CFile::modeCreate|CFile::modeWrite,&exc))
{
CArchive ar(&fp,CArchive::store);
m_descList.Serialize(ar); ar.Close();
}
我是这么写的。但是跟内容不全。不知道怎么回事。少了些东西
m_descList.RemoveAt(pos);
实现功能是修改此节点下的内容。csDesc 为新内容。。是不是这里错了?
最好在保存前以及读取后TRACE一下,看看CStringList的内容是否符合要求。