for(int i=0;i<GetCount();i++)
{
GetText(i,temp);
MessageBox(temp);
temp+=_T("\n");
ff.WriteString(temp);
}
ff.Close();
如果是英文,程序正常执行,如果我的列表框的项目是中文,则这个项目不能被写进去,程序也不会报任何错误,不知道哪里出问题了,书中的writestring可以写入中文的。。难道和编译器版本有关?

解决方案 »

  1.   

    把temp+=_T("\n")换成temp+=_L("\n")试试
    这个问题网上有很多解决方案呀
    有些答案,你自己参考
    -----------------------
    这个问题其实是这样产生的,我们写进去的只是数据而没有去写UNICODE文本标志。   
      UNICODE文本标志是(用UltraEdit的16进制打开)在文件的开头两个数据应该是   0xFF   0xFE   
      因为我们没有写这两个值,所以看起来就是乱码。   
        
      “语文"的ANSI文本是这样的:   
      ED   8B   87   65   
      "语文"的UNICODE文本是这样的:   
      FF   FE   ED   8B   87   65
    http://topic.csdn.net/t/20030313/23/1528742.html
    ------------------------
    把T("123456中文 abcdefg unicode \n")换成L("123456中文   abcdefg unicode  \n")试试;  
    http://topic.csdn.net/t/20020605/18/781216.html
      

  2.   


    for (int i=0; i<(int) dwCount; i++) {
    CString string;
    GetText (i, string);
    string += _T ("\n");
    file.WriteString (string);
    }
    这个是书里的代码,可以用中文.没有用L宏.
    他用的是VC6,我用2005.是不是编译器的关系啊?
      

  3.   

    你看看是不是例子上有个宏定义#define _UNICODE你没有加到你自己的程序里?_T()宏是根据你是否定义_UNICODE来自动展开的
      

  4.   

    编码转换
    http://blog.csdn.net/DavidHsing/archive/2008/11/17/3317841.aspx
      

  5.   

    使用setlocale就可以解决问题,不过答者有分