CString path;
CFile   file;
CString   str   =   _T("2008.5.21       Modifed");
file.Open(path,CFile::modeCreate|CFile::modeWrite);   
file.Write(str,str.GetLength()*2);   
file.Close();
这样输出的文本文档是unicode编码的,可我需要ansi编码的,该怎么办呢?

解决方案 »

  1.   

    程序中默认使用Unicode字符串,但并不表示只能用Unicode字符串。
      

  2.   

    CStringA   str   =   "2008.5.21       Modifed"; 
    file.Open(path,CFile::modeCreate ¦CFile::modeWrite);    
    file.Write(str,str.GetLength());    
    file.Close();
      

  3.   


    楼上的不行,因为楼主的工程是UNICODE的,所以
    CStringA   str   =   "2008.5.21       Modifed";
    会转换成UNICODE类型,CString里保存的是UNICODE
    介绍一个简单的方式无论你的工程是ANSI,还是UNICODE,CStdioFile生成的文件都是ANSI编码的
    CStdioFile file;
    if(file.Open(_T("E:\\test.txt"), CFile::modeCreate | CFile::modeReadWrite))
    {
    file.WriteString(_T("ABCDEFG"));
    file.Close();
    }
      

  4.   

    我都试了下,3楼输出的确实是unicode字符,而且只有字符串的一半,改为GetLength()*2后输出完整的字符串,不过还是unicode版本。依然感谢3楼!
    4楼的方案可行。
      

  5.   

    对了,三楼的CStringA报错,我是改为CString才得到上述结果的。
      

  6.   

    是啊。不好意思,没讲清楚。我对VC几个版本间的差异不是很清楚。vc6不好吗?迅雷、QQ都是VC6写的吧。
      

  7.   

    VC .net 2002以上的CString支持不同编码,可以使用CStringA和CStringW版本。VC 6太老了,该淘汰了。