本帖最后由 VisualEleven 于 2013-08-09 11:53:54 编辑

解决方案 »

  1.   

    // CString是unicode
    // Remote_Name应该是wchar_t
      

  2.   

    可以使用ATL 的  CT2CW  可以简单的从单字符转换为双字符。
      

  3.   

    m_remote_name.Format(_T("%S"),pRemote_DataBase->Remote_Name);//大写试试
      

  4.   

    既然你是unicode那么char*转CString可以直接用char* data; CString csData(data);。。这个构造函数不是现成的吗
      

  5.   

    本帖最后由 VisualEleven 于 2013-08-09 10:18:25 编辑
      

  6.   

    本帖最后由 VisualEleven 于 2013-08-09 10:18:01 编辑
      

  7.   

    m_remote_name.Format(_T("%s"), CString(pRemote_DataBase->Remote_Name));
      

  8.   

    2楼不说了么
    MultiByteToWideChar
      

  9.   

    UpdateData(true);
    TCHAR* tempAct;
    CString stemp;
    tempAct = m_remote_name.GetBuffer();
    WideCharToMultiByte(0,0,tempAct,-1,pRemote_DataBase->Remote_Name,m_remote_name.GetLength(),NULL,NULL);
    怎么只得到一个中文啊. 是哪里搞错了
      

  10.   

    输入刘德华,m_remote_name.GetLength() = 3, 
    输入刘, m_remote_name.GetLength() = 2, 
    怎么会这么样
      

  11.   

    没看到源码,就两个变量类型不知道你怎么处理的。
    你到百度里面直接搜索Cstring,会搜索到百度百科里有解释,很专业、很全面的解释。
    写这篇文章的是个大牛看完后,一切都清晰了
      

  12.   

    搞定了,WideCharToMultiByte(0,0,tempAct,-1,pRemote_DataBase->Remote_Name,CStringA(m_remote_name).GetLength(),NULL,NULL);
      

  13.   

    其实char 到 CStringW 有更简单的方式.CStringW Str;
    char buf[] = "xxxx";
    因为CString类重载了相关方法, 可以接受从ASCII到UNICODE串的自动转换.
    下面三种方式都可以.
    CStringW Str(buf);
    CStringW Str2=buf;
    CStringW Str3;
    Str3 = buf;