针对DBCS所提供的函数
PTSTR CharNext(PCTSTR pszCurrentChar); 返回字符串中的下一个字符的地址
PTSTR CharPrev(PCTSTR pszStart,PCTSTR pszCurrentChar);返回字符串中的上一个字符的地址
BOOL IsDBCSLeadByteTRUE(BYTE bTestChar); 如果该字节是DBCS字符的第一个字节,则返回
Unicode字符集
Unicode采用16位来表示一个字符
C运行库中对Unicode的支持
wchar_t类型 以及响应wcs(wide char string)类型库函数
MS通用定义
TCHAR类型 以及_tcs了性库函数
Windows中的Unicode处理
Windows系统提供了大量的字符处理函数, 在实际程序中尽量使用这些程序而不是C运行期库函数,这有利于提高程序性能, 因为极有可能这些函数早已被Explorer等系统程序装入内存。
函数通常希望你在字符中传递一个缓存的大小,而不是字节。 这意味着你不应该传递sizeof(szBuffer),而应该传递(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那么要按字节来分配内存。这就是说,应该调用 malloc(nCharacters *sizeof(TCHAR)),而不是调用 malloc( nCharacters )。如果操作错误,编译器将不发出任何警告。 |
Windows字符串函数
lstrcat 将一个字符串置于另一个字符串的结尾处
lstrcmp 对两个字符串进行区分大小写的比较
lstrcmpi 对两个字符串进行不区分大小写的比较
lstrcpy 将一个字符串拷贝到内存中的另一个位置
lstrlen 返回字符串的长度(按字符数来计量)
与C库函数的不同时,cmp函数是通过调用CompareString来实现的
CompareString(LCID lcid, DWORD fdwStyle, PCWSTR pString1, int cch1, PCWSTR pString2, int cch2);该函数对两个Unicode字符串进行比较。
其中lcid是一个32位用于唯一标识一门语言的标识,在创建线程时,该线程总会被赋予一种语言,可以用GetThreadLocal()来返回该线程的语言标识符。
NORM_IGNORECASE 忽略字母的大小写
NORM_IGNOREKANATYPE 不区分平假名与片假名字符
NORM_IGNORENONSPACE 忽略无间隔字符
NORM_IGNORESYMBOLS 忽略符号
NORM_IGNOREWIDTH 不区分单字节字符与作为双字节字符的同一个字符
SORT_STRINGSORT 将标点符号作为普通符号来处理
CompareString的其余4个参数用于设定两个字符串和它们各自的长度。如果为cch1参数传递- 1,那么该函数将认为pString1字符串是以0
结尾,并计算该字符串的长度。对于pString2字符串来说,参数cch2的作用也是一样。
阅读(2149) | 评论(0) | 转发(0) |