char和wchar_t的转换

1.mbstowcs(b,a,2)的第3个参数是字符数而不是字节数。

所以把char 转为wchar_t时,而且char中不止有英文时,不能使用strlen,而要用_mbslen算字符数。

有时怎么转都乱码,需要setlocale(   LC_ALL,   "chs"   );才能转成中文。

 

TCHAR.H routine _UNICODE & _MBCS not defined _MBCS defined _UNICODE defined

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen_l

_mbslen_l

wcslen_l

 

 

2.MultiByteToWideChar(CP_ACP,0,a,6,b,256); 注意,这个的第4个参数是字节数而不是字符数,如果是null结尾的可以写成-1。有些用上面那个需要setlocale的,这个不setlocale也能自动转换。

有的朋友可能已经发现,在标准的WinCE4.2或WinCE5.0 SDK模拟器下,这个函数都无法正常工作,其转换之后的字符全是乱码.及时更改MultiByteToWideChar()参数也依然如此.
不过这个不是代码问题,其结症在于所定制的操作系统.如果我们定制的操作系统默认语言不是中文,也会出现这种情况.由于标准的SDK默认语言为英文,所以肯定会出现这个问题.而这个问题的解决,不能在简单地更改控制面板的"区域选项"的"默认语言",而是要在系统定制的时候,选择默认语言为"中文".
系统定制时选择默认语言的位置于:
Platform -> Setting... -> locale -> default language ,选择"中文",然后编译即可.

 

3.CStringW有接收char的mbs的构造函数,可以直接构造成unicode。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值