如 wstring str1 = _T("未识别");
   wstring str2 = _T("$$");   str1 +=str2; 的结果是str1= _T("未识?$")     这是怎么回事呢?

解决方案 »

  1.   

    你的str1是怎么看到的?我这里调试的时候没有问题啊
      

  2.   

    下面是我在MFC中的代码,是没有问题的:
            CString str1 ,str2;
    str1= _T("未识别"); 
    str2 = _T("$$"); 
    str1 += str2;
    MessageBox(str1);
      

  3.   


      str1是从BSTR类型字符串赋值来的(Activex控件),是std:string类型,不是CString类型。    
      

  4.   


      不好意思,弄错了。跟踪了以下发现 是在将 _T("未识别$$")转化为 UTF8时出现的乱码。    用的这个:
    string UnicodeToUTF8( const wstring & s )
    {
        string result;    int n = WideCharToMultiByte( CP_UTF8, 0, s.c_str(), -1, 0, 0, 0, 0 );
        char * buffer = new char[n];    ::WideCharToMultiByte( CP_UTF8, 0, s.c_str(), -1, buffer, n, 0, 0 );    result = buffer;
        delete[] buffer;    return result;
    }