Windows核心编程--字符编码

1、UTF-16将每个字符编码为2个字节,UTF-16能改进性能和减少内存消耗,Windows默认采用UTF-16编码;

2、UTF-8 值在0x0080以下的字符压缩为1个字节,0x0080和0x07FF之间的字符转换为2个字节,0x0800以上的都转换为3个字节,对0x0800以上的字符编码时,不如UTF-16高效;

3、UTF-32将每个字符都编码为4个字节。

4、typedef   char   CHAR ;  //8 bit

     typedef   wchar_t  WCHAR ; //16bit 

5、C运行库中strlen是一个能返回ANSI字符串长度的函数,wcslen能返回UNICODE字符串的长度。一般系统会通过UNICODE宏控制调用哪个函数,

#ifdef   _UNICODE 

   #define  _tcslen    wcslen 

#else

  #define   _tcslen   strlen

#endif

6、使用安全字符串函数,_tcscpy_s ,  _tcscat_s  ;

errno_t  _tcscat_s( PTSTR strDestination, size_t numberOfcharacters, PCTSTR strSource )

errno_t  _tcscpy_s( PTSTR strDestination, size_t numberOfcharacters, PCTSTR strSource )

numberOfcharacters使用_countof宏计算。

VOID UserSafeString( VOID )
{
TCHAR szDest[MAX_PATH];
    TCHAR pSrc[] = L"123456789";
    _tcscpy_s(szDest,_countof( pSrc), pSrc);
_tprintf( TEXT("MyName = %s\n"), pSrc);
}

_countof宏后面必须是数组名,如果是指向常量字符串的指针,那么_countof宏会报错,该宏定义分别定义了在C环境下和C++环境下不同的处理方式。

7、StringCchCat(Ex)  StringCchCopy(Ex)  StringCchPrintf(Ex) 传入的字符数,即_countof 

StringCbCat(Ex)  StringCbCopy(Ex)  StringCbPrintf(Ex) 传入字节数,通常是 sizeof。

8、int MultiByteToWideChar将多字节转换为宽字符   int WideCharToMultiByte 将宽字符转换为多字符


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值