字符串及处理之四: Windows自带的字符串函数
2006-04-11 13:15
267 查看
Windows字符串函数
Windows还提供了一组范围很广的字符串操作函数。这些函数与C运行期字符串函数(如strcpy和wcscpy)很相似。但是该操作系统函数是操作系统的一个组成部分,操作系统的许多组件都使用这些函数,而不使用C运行期库。建议最好使用操作系统函数,而不要使用C运行期字符串函数。这将有助于稍稍提高你的应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在你的应用程序运行时,它们可能已经被装入RAM。
若要使用这些函数,系统必须运行Windows 2000或Windows 98。如果安装了Internet Explorer 4.0或更新的版本,也可以在较早的Windows版本中获得这些函数。
在经典的操作系统函数样式中,操作系统字符串函数名既包含大写字母,也包含小写字母,它的形式类似这个样子:StrCat、StrChr、StrCmp和StrCpy等。若要使用这些函数,必须加上ShlWApi.h头文件。另外,如前所述,这些字符串函数既有ANSI版本,也有Unicode版本,例如StrCatA 和StrCatW。由于这些函数属于操作系统函数,因此,当创建应用程序时,如果定义了UNICODE(不带前置下划线),那么它们的符号将扩展为宽字符版本。
Windows也提供了一组用于对Unicode字符串进行操作的函数,表2 - 4对它们进行了描述。
表2-4 对Unicode字符串进行操作的函数
函数描述
lstrcat 将一个字符串置于另一个字符串的结尾处
lstrcmp 对两个字符串进行区分大小写的比较
lstrcmpi 对两个字符串进行不区分大小写的比较
lstrcpy 将一个字符串拷贝到内存中的另一个位置
lstrlen 返回字符串的长度(按字符数来计量)
这些函数是作为宏来实现的,这些宏既可以调用函数的Unicode版本,也可以调用函数的ANSI版本,这要根据编译源代码模块时是否已经定义了UNICODE而定。例如,如果没有定义UNICODE,lstrcat函数将扩展为lstrcatA。如果定义了UNICODE,lstrcat将扩展为lstrcatW。
在windows环境下操作DBCS:
如果只是调用strlen函数,那么你无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。ANSI的C运行期库中没有配备相应的函数,使你能够对双字节字符集进行操作。但是,Microsoft Visual C++的运行期库却包含许多函数,如_mbslen ,它可以用来操作多字节(既包括单字节也包括双字节)字符串。
为了帮助你对DBCS字符串进行操作,Windows提供了下面的一组帮助函数(见表2 - 1 )。前两个函数CharNext 和CharPrev 允许前向或逆向遍历DBCS字符串,方法是每次一个字符。第三个函数IsDBCSLeadByte, 在字节返回到一个两字字节符的第一个字节时将返回TRUE。
表2-1 对DBCS字符串进行操作的帮助函数
PTSTR CharNext(PCTSTR pszCurrentChar);
返回字符串中的下一个字符的地址
PTSTR CharPrev(PCTSTR pszStart,PCTSTR pszCurrentChar );
返回字符串中的上一个字符的地址
BOOL IsDBCSLeadByteTRUE(BYTE bTestChar);
如果该字节是DBCS字符的第一个字节,则返回
Windows还提供了一组范围很广的字符串操作函数。这些函数与C运行期字符串函数(如strcpy和wcscpy)很相似。但是该操作系统函数是操作系统的一个组成部分,操作系统的许多组件都使用这些函数,而不使用C运行期库。建议最好使用操作系统函数,而不要使用C运行期字符串函数。这将有助于稍稍提高你的应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在你的应用程序运行时,它们可能已经被装入RAM。
若要使用这些函数,系统必须运行Windows 2000或Windows 98。如果安装了Internet Explorer 4.0或更新的版本,也可以在较早的Windows版本中获得这些函数。
在经典的操作系统函数样式中,操作系统字符串函数名既包含大写字母,也包含小写字母,它的形式类似这个样子:StrCat、StrChr、StrCmp和StrCpy等。若要使用这些函数,必须加上ShlWApi.h头文件。另外,如前所述,这些字符串函数既有ANSI版本,也有Unicode版本,例如StrCatA 和StrCatW。由于这些函数属于操作系统函数,因此,当创建应用程序时,如果定义了UNICODE(不带前置下划线),那么它们的符号将扩展为宽字符版本。
Windows也提供了一组用于对Unicode字符串进行操作的函数,表2 - 4对它们进行了描述。
表2-4 对Unicode字符串进行操作的函数
函数描述
lstrcat 将一个字符串置于另一个字符串的结尾处
lstrcmp 对两个字符串进行区分大小写的比较
lstrcmpi 对两个字符串进行不区分大小写的比较
lstrcpy 将一个字符串拷贝到内存中的另一个位置
lstrlen 返回字符串的长度(按字符数来计量)
这些函数是作为宏来实现的,这些宏既可以调用函数的Unicode版本,也可以调用函数的ANSI版本,这要根据编译源代码模块时是否已经定义了UNICODE而定。例如,如果没有定义UNICODE,lstrcat函数将扩展为lstrcatA。如果定义了UNICODE,lstrcat将扩展为lstrcatW。
在windows环境下操作DBCS:
如果只是调用strlen函数,那么你无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。ANSI的C运行期库中没有配备相应的函数,使你能够对双字节字符集进行操作。但是,Microsoft Visual C++的运行期库却包含许多函数,如_mbslen ,它可以用来操作多字节(既包括单字节也包括双字节)字符串。
为了帮助你对DBCS字符串进行操作,Windows提供了下面的一组帮助函数(见表2 - 1 )。前两个函数CharNext 和CharPrev 允许前向或逆向遍历DBCS字符串,方法是每次一个字符。第三个函数IsDBCSLeadByte, 在字节返回到一个两字字节符的第一个字节时将返回TRUE。
表2-1 对DBCS字符串进行操作的帮助函数
PTSTR CharNext(PCTSTR pszCurrentChar);
返回字符串中的下一个字符的地址
PTSTR CharPrev(PCTSTR pszStart,PCTSTR pszCurrentChar );
返回字符串中的上一个字符的地址
BOOL IsDBCSLeadByteTRUE(BYTE bTestChar);
如果该字节是DBCS字符的第一个字节,则返回
相关文章推荐
- 字符串及处理之 使用TCHAR方案 Windows自带的字符串函
- [C/C++]_[初级]_[Windows上的字符串处理实用函数]
- mysql 字符串函数(查询处理字符串)
- 前端处理手机键盘自带emoji表情输入评论后前端转换成字符串传入数据库处理
- [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- Windows核心编程--错误处理/字符/字符串
- windows字符和字符串处理
- PHP扩展之文本处理(一)——字符串及字符串函数大全
- windows自带的可生成各种数据库连接字符串工具打开方法
- [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- windows编程字符串处理小结
- windows中目录字符串处理函数, MSDN里有使用的例子
- windows核心编程心解--字符和字符串处理
- Windows内核函数(1) - 字符串处理函数
- [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- SQL Server+win2008防止远程连接数据库的方法(windows自带防火墙处理)
- 【如何处理Windows 8 系统自带微软拼音简捷输入法无法删除】
- C++ 编程处理字符串经常出错,我自己接管了Windows的那个错误报告
- Java字符串处理之详解String自带方法
- 第五节 字符串处理与字符串函数