char*指向的动态内存存储的数据怎样正确安全的转换为LPCWSTR ?也就是说LPCWSTR 代表着wchar_t × 。wchar_t也是WCHAR。是直接强制转换吗?我现在遇到的问题是向一个需要传递LPCWSTR类型值给这个函数,但我传了个CString类型,因为我要最终处理CString类型。但是这么转了之后,还要处理UTF8转化为GB2312格式,发现得到的数据中有些该正确出现的中文字符是问号?表示的。

解决方案 »

  1.   

    我通常用mbstowcs把char转换为WCHAR的
      

  2.   

    先谢。就这么说吧,有没有朋友做过从UTF8转化为GB2312数据的时候,发现转化完了之后,数据中有一些问号?的字符?而大多数的数据是正常显示的。
      

  3.   

    从char *强制转化为CString,然后再强制转化为LPCWSTR,这样做在转化的过程中,数据安全吗?
      

  4.   


    这个特别做过这方面的转换,
    有次做中文界面, 某些特殊符号, copyright符号或者摄氏度℃这个符号, 在中文系统的机器里显示就是正确的, 而在英文系统里就是?
      

  5.   


    有个很简单的方法:
    如果为 UNICODE 工程,则:char buf[]="45435634645645";CString str = buf;
    好了,需要 LPCWSTR 的地方,直接用 str 即可。
      

  6.   

    UTF8转化为GB2312数据的时候,发现转化完了之后,数据中有一些问号?的字符
    GB2312 没有这种字符, 所以有'?'char *强制转化为CString,然后再强制转化为LPCWSTR,这样做在转化的过程中,数据安全吗?
    强制转换是不对的, 自动通过CString的赋值,转换就没问题我个人习惯用 _bstr_t 转换, 很方便