请问: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