MFC如何将CString类数据二进制保存到文档,并且再读取到CSring
小弟按网上教程,用循环语句写了个写二进制文档代码:
void CBox3Doc::OnWrite2() //写二进制文件
{
char* strFilePath="1.dat";
CFile myFile;
if(myFile.Open( strFilePath, CFile::modeReadWrite | CFile::modeCreate | CFile::typeBinary ))
{
for(int i=0;i<10;i++)
{
//myFile.WriteString("第1行 \n");
CString str;
int number;
str.Format("类别*:%d\n",i);
//number=sizeof(str);
number=str.GetLength();
myFile.Write(&number,sizeof(int));//9,写入个数
myFile.Write(&str,number);
str.Format("标题**:%d\n",i);
//number=sizeof(str);
number=str.GetLength();
myFile.Write(&number,sizeof(int));//10
myFile.Write(&str,number);
str.Format("密码***:%.3f\n",i+10.10);
number=str.GetLength(); //16
//number=sizeof(str);
myFile.Write(&number,sizeof(int));
myFile.Write(&str,number);
}
myFile.Close();
size2=i;
}
}
再读取:
void CBox3Doc::OnRead2()
{int i=0;
CFile readTxtFile( "1.dat", CFile::modeRead | CFile::typeBinary );
while(i<size2)
{CItem buffer;
buffer.biaoti="0";
buffer.leibie="0";
buffer.mima="0";
int num=0;
readTxtFile.Read( &num, sizeof(int));
readTxtFile.ReadHuge( &(buffer.leibie), num);
readTxtFile.Read( &num, sizeof(int));
readTxtFile.ReadHuge( &(buffer.biaoti), num);
readTxtFile.Read( &num, sizeof(int));
readTxtFile.ReadHuge( &(buffer.mima), num);
m_string.Add(buffer);
i++;
}
readTxtFile.Close();
}
但是一读取就报错,实在弄不明白,所以请大神们帮忙看看,
小弟也是初学MFC,菜鸟一个。
[解决办法]
CItem buffer;
这是个什么类型,另外,你好象写的不是字符串的值,倒象是写的这个字符串的地址.
[解决办法]
myFile.Write(&str,number);
以这句为例
str就是指针了
不用再&str了