CMemFile保存CString字符串,然后再读出来,发现字符串后加了一串乱码,这是怎么回事啊?CString str = "fdfsdee幅度撒解放军";
CMemFile file;

file.Write(str.GetBuffer(0), str.GetLength());
file.SeekToBegin(); CString str2;
file.Read(str2.GetBuffer(0), file.GetLength());
AfxMessageBox(str2);

解决方案 »

  1.   

    file.Write(str.GetBuffer(0), str.GetLength()); 
    没有考虑string 结束的\0;
      

  2.   

    我用的是VC6,不知怎么的就加了一段 TrackObject@@ 进原字符串结尾处。
    用VC6的朋友帮忙调试调试。
      

  3.   

    因为你这个str.GetLength()是不对的。
      

  4.   

    改成这样:
    file.Write(str.GetBuffer(0)+'\0', str.GetLength()+1);
      

  5.   

    1、看现象是file文件本身里面有内容。并且长度超过str的长度。file不是新建的?每次open的时候都新建看看。如果file.GetLength() > str.GetLength(),则就是这个原因。
    或者
    2、file.Read(str2.GetBuffer(0), file.GetLength()); 改为
    long length = file.GetLength();
    char *strRead;
    strRead = new char[length + 1];
    file.Read(strRead, length);
    str2 = strRead;
    delete [] strRead;
      

  6.   

    file.Write(str, str.GetLength()); 
      

  7.   

    GetBuffer()后应该ReleaseBuffer()?