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

Awavese 2007-02-07 09:29:31
请问:MFC 中如何 把 CString 转化为 WCHAR, 谢谢
...全文
5214 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhteric 2010-03-21
  • 打赏
  • 举报
回复
int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
jonson319 2010-03-18
  • 打赏
  • 举报
回复
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 ,并输出字符串
sk_sakula 2010-03-18
  • 打赏
  • 举报
回复
http://www.codeguru.com/forum/showthread.php?t=337247
jxf654 2007-02-17
  • 打赏
  • 举报
回复
up
AgedBOY 2007-02-14
  • 打赏
  • 举报
回复
如果你使用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编译!
YoungBee611 2007-02-10
  • 打赏
  • 举报
回复
看工程属性里 如果才用了unicode,则本来就是w_char
Awavese 2007-02-08
  • 打赏
  • 举报
回复
我查过,没找到满意结果。 yuanwenmao 能给出代码分析下吗,
葳蕤 2007-02-08
  • 打赏
  • 举报
回复
MultiByteToWideChar
chl2090 2007-02-08
  • 打赏
  • 举报
回复
支持楼上的

CString str = _T("csdn");
加个_T就可以在下面用memcpy 或者strncpy 之类的转换了,
HewpKanXue 2007-02-08
  • 打赏
  • 举报
回复
CString src=_T("iweurtyiwerughweiughewiughwitrgierogieotivert");
WCHAR des[100];
lstrcpy(des,src);
蒋晟 2007-02-08
  • 打赏
  • 举报
回复
http://www.codeguru.com/forum/showthread.php?t=337247
deepwhtie 2007-02-07
  • 打赏
  • 举报
回复
google 一下,“cstring 转换”
有很多资料的。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧