ofstream fout(pDoc->sFileName);
for(int j=0;j<8;j++)
for(int i=0;i<pDoc->plulist[j].size();i++)
{
CString str;
str.Format(_T%-20s"),pDoc->plulist[j][i].name); fout<<str<<endl;//此处显示字符正常!
}
但是查看文件却是:
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000
0111B000

解决方案 »

  1.   

    你分别MesageBoxA和 MessageBoxW试试看那个能正常显示。
      

  2.   

    呃,刚才少说一点
    ofstream 是不支持<<写入CString类型的
    你得在输出的时候强制转化类型 const char*或者const wchar_t*
      

  3.   

    需要转换为多字符集。代码如下:
    ofstream   fout(pDoc-> sFileName); 
    for(int   j=0;j <8;j++) 
    for(int   i=0;i <pDoc-> plulist[j].size();i++) 

    CStringA   str; 
    wchar_t* pwszUnicode = pDoc->plulist[j][i].name.GetBuffer(pDoc->plulist[j][i].name.GetLength());
    int iSize;
    char* pszMultiByte; iSize = WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, NULL, 0, NULL, NULL);
    pszMultiByte = (char*)malloc((iSize+1)/**sizeof(char)*/);
    WideCharToMultiByte(CP_ACP, 0, pwszUnicode, -1, pszMultiByte, iSize, NULL, NULL);str.Format("%-20s"),pszMultiByte); fout < <str < <endl;//