windows核心编程读书笔记—字符与字符串

1windows vista,每个Unicode都使用UTF-16编码,谈到unicode,除非特别声明,否则都是UTF-16编码。

2wchat_t对应char,表示一个16unicode字符。声明unicode字符和字符串方式:

  • wchar_t c = L'A'
  • wchar_t str[100] = L"Astring"

3:宏TEXT自动切换ANSI或者UNICODE字符/字符串。

4windows NT起,所有核心函数都用Unicode,及时我们调用的是ANSI版本函数时,此函数也只是一个转换层,转为字符为unicode,再调用unicode版本函数。返回类似。已知转换函数存在bug,应用程序应该用unicode开发。

5:定义UNICODE,_UNICODE要么同时指定,要么都不指定。

6C运行库中的ANSI函数不会转换为UNICODE版本。

7:安全函数,以_s为后缀eg:_tcscpy_s_tcscat_s,使用_countof计算缓冲区大小。缓冲区太小会返回失败,不会自动截断。ERANGE

8:更多控制字符串函数:

StringCchCat(Ex),StringCchCopy(Ex),StringCchPrintf(Ex).. .缓冲区太小会执行截断。STRSAFE_E_INSUFFICIENT_BUGGER,被SUCCEEDED/FAILED定义成失败。

9:比较函数:CompareString(Ex)LCID GetThreadLocale(),

cch参数传入负值,会假设pString0结尾。

CompareStringOrdinal,比较程序内部所用字符串(路径名、注册表、XML元素/属性等),速度快。只支持Unicode。两个函数返回0表示调用失败,返回CSTR_LESS_THAN(1)表示pString1小于pString2,返回CSTR_EQUAL(2)表示相等,返回CSTR_GREATER_THAN(3)表示pString1大于pString2。返回值-2

10:使用MultiByteToWideCharWideCharToMultiByte进行AnsiUnicode转换。

11:判断unicode还是Ansi字符,使用IsTextUnicode

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值