当前位置:编程学习 > C#/ASP.NET >>

请问:MFC 中如何 把 CString 转化为 WCHAR

请问:MFC 中如何 把 CString 转化为 WCHAR, 谢谢 --------------------编程问答-------------------- google 一下,“cstring 转换”
有很多资料的。 --------------------编程问答-------------------- MultiByteToWideChar --------------------编程问答-------------------- 我查过,没找到满意结果。 yuanwenmao  能给出代码分析下吗, --------------------编程问答-------------------- http://www.codeguru.com/forum/showthread.php?t=337247 --------------------编程问答-------------------- CString src=_T("iweurtyiwerughweiughewiughwitrgierogieotivert");
WCHAR  des[100];
lstrcpy(des,src); --------------------编程问答-------------------- 支持楼上的

CString str = _T("csdn");
加个_T就可以在下面用memcpy 或者strncpy 之类的转换了, --------------------编程问答-------------------- 看工程属性里 如果才用了unicode,则本来就是w_char --------------------编程问答-------------------- 如果你使用VC2002(2003更好)或以上的话,CString转WCHAR简单的很:

1,假设你的程序是MBCS编译,并且不打算兼容UNICODE的话,那么:

{
    USES_CONVERSION;
    
    CString sText = "text string";
    WCHAR wszWideString[N];

    wcscpy(wszWideString, CA2CW(sText));
}

2,假设你的程序是UNICODE编译,或者MBCS、UNICODE兼容的话,那么:

{
    USES_CONVERSION;
    
    CString sText = _T("text string");
    WCHAR wszWideString[N];

    wcscpy(wszWideString, CT2CW(sText));
}

所以,你应该到MSDN里查询如下关键字即可:

1, USES_CONVERSION
2, CA2CW (会看到一族 X2X 函数)

VC2002里的这族函数在类型转换上有些缺陷,但是调用时自行强制后就没问题了,2003里彻底没有缺陷了。

这些要归功于升级改版后的ATL。

最后,这些函数归根到底是基于API MultiByteToWideChar/WideCharToMultiByte的,在Windows中是需要安装有相应的码表才能正确转换的。

比如说,你的程序是MBCS编译的,你的 CHAR[] 字符串里的中文是GB2312编码的,在纯英文Windows下(纯英文是指没有安装中文码表时),CA2CW()或MultiByteToWideChar()是都不能正确转换的!

所以说,如果你只是被迫需要兼容一些第三方API调用,可以使用一下上述转换方法。但是对于跟语言文字、字符串息息相关的程序模块来说,要想走向世界,一定要用UNICODE编译! --------------------编程问答-------------------- up --------------------编程问答-------------------- UP UP UP   s t r   =   s t r 0   +   n a m e ;  
  g r a p h . D r a w S t r i n g ( s t r ,  s t r . G e t L e n g t h ( ) ,  & f o n t 1 ,  P o i n t F ( 0 . 0 f ,  0 . 0 f ) ,  
& t e x t B r u s h ) ;  
  g r a p h . D r a w S t r i n g ( s t r 1 ,   s t r 1 . G e t L e n g t h ( ) ,   & f o n t 1 ,   P o i n t F ( r e c t . r i g h t   /   2 . 0 f ,  
8 0 . 0 f ) ,   & s t r i n g F o r m a t ,   & t e x t B r u s h ) ;  
  / /   获取字体名称2 ,构造字体2 ,并输出字符串  --------------------编程问答-------------------- http://www.codeguru.com/forum/showthread.php?t=337247 --------------------编程问答-------------------- int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,