有个 WCHAR string[] = L"测试";怎样把 CString 的字符串转换到 WCHAR string[]?

解决方案 »

  1.   

    CString是基于TCHAR数据类型的对象。
    如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为char,即8位字符类型。在UNICODE方式下,CString对象由16位字符组成。非UNICODE方式下,CString对象由8位字符组成。当不使用_UNICODE时,CString是多字节字符集(MBCS,也被认为是双字节字符集,DBCS)。注意,对于MBCS字符串,CString仍然基于8位字符来计算,返回,以及处理字符串,并且你的应用程序必须自己解释MBCS的开始和结束字节。
    /////////////////////////
    所以两者是不需要转换的,不知你怎么会出现需要转换的情况??
    难道你在非UNICODE的情况下要转换成wchar_t?那就要2楼所用的函数
    MultiByteToWideChar
    CString s("123");
     wchar_t *w;
     int l;    l = MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)s, -1, NULL, 0);
     w = new wchar_t[l];
        MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)s, -1, w, l); 
     delete []w;