window核心编程学习小记1(字符和字符串的处理)

1.使用unicode编码的好处

因为Windows NT以上的版本都是使用Unicode来构建的,所以不管是创建窗口,显示文本,还是字符串都需要用到Unicode字符串。程序中如果使用ANSI字符串,函数在进行处理时系统将字符串转换成Unicode字符串,虽然是幕后操作但是也会带来一些不必要的系统时间和内存上的开销。而且Unicode字符集在语言的转换上也是相当高效的支持所有语言,有利于应用程序本地化。

2.Windows函数的多数类表中有字符串,则该函数通常有两个版本如:CreateWindowEx可分为CreateWindowExW接受Unicode字符串和CreateWindowExA接受ANSI字符串,在WinUser.h中定义如下

#ifdef UNICODE

#define CreateWindowEx CreateWindowExW

#else

#define CreateWindowEx CreateWindowExA

#endif

3.Unicode字符都是16位宽,所以经常被称为宽(wide)字符,因此在对字符的处理上不会在使用ANSI版本的库,如C运行库中,strlen就是返回一个ANSI字符串长度的函数,与之对应的函数时wcslen这个函数能放回Unicode字符串长度,个人习惯上使用_tcslen因为TChar.h文件中指出

#ifdef UNICODE

#define _tcslen wcslen

#else

#define _tcslen strlen

#endif

4.新的安全字符串

对与C运行库现有的字符串处理如_tcscpy,_tcscat等字符串在使用上如果操作不当可能会导致应用程序崩溃等问题,所以在新版的字符串处理函数最后增加了_s(代表secure)尽可能在使用中保证内存不溢出。

5.Unicode与ANSI字符转换,即WideCharToMultiByte()与MultibyteToWideChar()的使用


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值