注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 

日志

 
 

《Windows核心编程》学习笔记(2)– 如何编写unicode代码续  

2010-10-10 12:38:35|  分类: 《Windows核心编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1. 为了兼容性可以调用以下函数来处理字符:

lstrcat 将一个字符串置于另一个字符串的结尾处
    lstrcmp 对两个字符串进行区分大小写的比较
    lstrcmpi 对两个字符串进行不区分大小写的比较
    lstrcpy 将一个字符串拷贝到内存中的另一个位置
    lstrlen 返回字符串的长度(按字符数来计量)

PTSTR CharLower(PTSTR pszString)

PTSTR CharUpper(PTSTR pszString)

DWORD CharLowerBuff(PTSTR pszString,DWORD cchString)

DWORD CharUpperBuff(PTSTR pszString,DWORD cchString)

BOOL IsCharAlpha(TCHAR ch);

BOOL IsCharAlphaNumeric(TCHAR ch)

BOOL IsCharLower(TCHAR ch)

BOOL IsCharUpper(TCHAR ch)

sprintf(PTSTR, PTSTR, PTSTR)


注: (1).CharLower,CharUpper,CharLowerBuff,CharUpperBuff这几个函数还可以用来处理一个字符,方法如下:TCHAR cLowerCaseChar= CharLower((PTSTR)szString[0])

     (2).CharUpper 和CharUpperBuff的区别是charUpperBuff用于处理缓冲区的数据(该缓冲区不必以0结尾)

     

2其他函数:

DWORD IsTextUnicode(CONST PVOID pvBuffer,int cb, PINT pResult);(此函数用于判断文本文件的编码类型)

int WideCharToMultiByte(UINT uCodePage, DWORD dwFlags,PCWSTR pWideCharStr,

    int cchWideChar,PSTR pMultiByteStr,int cchMultiByte,PCSTR  pDefaultChar,PBOOL pfUDC)

int MultiByteToWideChar(UINT uCodePage, DWORD dwFlags,PSTR pMultiByteStr,

    int cchMultiByte,,PCWSTR pWideCharStr,int cchWideChar)

函数MultiByteToWideChar的使用方法:

1) 调用MultiByteToWideChar函数,为pWideCharStr参数传递NULL,为cchWideChar参数传递0。
    2) 分配足够的内存块,用于存放转换后的Unicode字符串。该内存块的大小由前面对MultiByteToWideChar的调用返回。
    3) 再次调用MultiByteToWideChar,这次将缓存的地址作为pWideCharStr参数来传递,并传递第一次调用MultiByteToWideChar时返回的        缓存大小,作为cchWideChar参数。
    4) 使用转换后的字符串。
    5) 释放Unicode字符串占用的内存块。


3.安全字符串函数

C运行库中现有的字符串处理函数(如_tcscpy宏后面的那些函数)已被标记废弃不用。如果使用了这些函数,编译器就会发出警告。

取而代之的是安全字符串函数,例如:

errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );

errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource );

这些安全的字符串函数在将一个可写的缓冲区作为参数传递时,必须同时提供他的大小。这个值应该是一个字符数。通过对缓冲区使用_countof宏(在stdlib.h中定义),我们很容易计算出这个值。

ps:1.使用上面这些安全的字符串函数的时候必须包含头文件StrSafe.h。同时String.h也会自动被包含进来。

    2.必须包含其他所有文件之后才包含StrSafe.h。

  评论这张
 
阅读(424)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018