void CTestDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
CFile file;
UpdateData();
m_Edit1.TrimLeft(); 
file.Open("ccc.txt",CFile::modeCreate|CFile::modeNoTruncate
|CFile::modeWrite|CFile::shareDenyNone);
{
CArchive ar(&file,CArchive::store);
Serialize(ar);
    ar.Close();
    file.Close();
}
}
void CTestDlg::Serialize(CArchive& ar) 
{
CObject::Serialize(ar); 
if (ar.IsStoring())
{ // storing code
ar << m_Edit1;
}
else
{ // loading code
 ar>>m_Edit1;
     }
}    当我输入一个数后,点按钮,保存,怎么在文件的这个数字前面有个黑点,是怎么回事。

解决方案 »

  1.   

    那不是黑点。而是记录数字长度的一个数字。
    你使用的是 serialize方法,他自己负责写文件的格式,不能够按照常规的只写一个字符串的方式来理解。他实际上是先写入了字符串的长度,然后再写字符串的内容的。
      

  2.   

    你用二进制方式打开你的输出文件,你可以看到第一个字节就是你写入的数字的长度。
    这就是系统自己的SERIALZIE方法的记录方式。如果你再写一些数字进去,你还会发现他们有的时候是不相邻的,中间被插入了几个空白(数字0),因为它又搞了一个4字节对齐的方案。有时间多写一些东西尝试一下就知道了。
    例如定义一个STRUCT结构,用SEEIALIZAE方法写出去,然后看磁盘文件,就可以看到并不是按照定义的数字顺序依次排列的(如同前段的解释)。要不使用相同serialize读取工作可就难喽。