如何将CString转换成WCHAR

转载:http://bbs.csdn.net/topics/100075810          八楼的答案

 

如果你使用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编译!

posted on 2013-07-16 15:34  ldjhust 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ldjhust/p/3193475.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值