CStdioFile file;
CString buffer;

if(file.Open(szPath, CFile::modeCreate | CFile::modeReadWrite)) 

UpdateData(TRUE);
file.WriteString(m_edit); 
file.Close(); 
}Unicode工程,但需要保存为Ansi编码的文件,保存的时候换行符都变成了0D 0D 0A,多了个0D,不知道怎样解决?

解决方案 »

  1.   

    难道保存的时候会把0A自动变成0D 0A?
      

  2.   

    但是以二进制写入(CFile::typeBinary)又会在每个字符前面加一个00,比如00 0D 00 0A
      

  3.   

    的确,就是这样的,如果是文本文件方式写入,会将0A变成0D  0A。读出时,又会将0D 0A变成0A。
    如果是二进制方式写入,会将0D  0A原样写入,同时,我个人认为,因为是Unicode文件,占了两个字节,又会在每个字符前面加一个00
      

  4.   

    我通常只用fread、fwrite,这样可以保证编码不会被以外的转换,效率也有很好的保证。
    你的m_edit是rtf控件吧?没什么好办法,写文件之前,先拷到一个新的字符串数组中,然后把连着的0x0d只保留一个。
      

  5.   

           fp1 = _wfopen(_T("your.txt") ,_T("wb")); //char buf[200];
    char *szName = new char[strProp.GetLength()+1];
    // Convert down to ANSI
    WideCharToMultiByte(CP_ACP, 0, m_edit.GetBuffer(), -1, szName, m_edit.GetLength(), NULL, NULL);
    szName[m_edit.GetLength()]=0;
    fprintf(fp1,"%s", szName);
    delete[]szName;
    fclose(fp1);
      

  6.   

    谢谢!最后选择了用m_edit.Replace(_T("\r"),_T(""));