[Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别

简介:
CRT (C Runtime) 的字符串函数就是我们常见的 strcmp, strchr, strstr 等等
Windows 系统DLL shlwapi.dll  也提供了类似的字符串处理函数,只是大小写有所不同: StrCmp, StrChr, StrStr 等。
两者的区别在于:
1) CRT  的字符串函数不支持 Unicode 字符串 (wchar_t)
2) CRT  的字符串函数不考虑系统的语言环境(locale), 而SHLWAPI 得函数则会考虑语言环境。举一个strrchr/StrRChr例子:
在英文Windows系统上:
StrRChrA("/Test/縺・a.txt", NULL, '/')  返回 "/a.txt"
strrchr("/Test/縺・a.txt", '/') 返回 "/a.xls"
 
在日文Windows系统上:
StrRChrA("/Test/縺・a.txt", NULL, '/')  返回 "/縺・a.txt"
strrchr("/Test/縺・a.txt", '/') 返回 "/a.txt"

日文字符・的第二个字节是0x2f, 正好是 '/'(0x2f) , 所以strchr返回a.txt的前一个字符。在英文系统上,StrRChrA 认为所有字符都是ASCII,所以返回的结果和strrchr一样。 而到了日文系统上,StrRChrA 能够识别日文字符,于是返回正确结果。


 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/274024,如需转载请自行联系原作者

相关文章
|
6月前
|
Unix Linux 编译器
windows下和linux下cmake的规则有区别吗
通过合理使用CMake的条件逻辑和平台特定的配置选项,开发者可以编写更加灵活和健壮的CMake脚本,确保项目在Windows和Linux上的一致性和可移植性。
322 76
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
138 0
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
12月前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
12月前
|
Windows
[原创]用MASM32编程获取windows类型
[原创]用MASM32编程获取windows类型
|
12月前
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务
|
12月前
|
API Windows
MASM32编程获取Windows当前桌面主题名
MASM32编程获取Windows当前桌面主题名
|
编译器 开发工具 C语言
解锁QtCreator跨界神技!Windows下轻松驾驭OpenCV动态库,让你的跨平台开发如虎添翼,秒变视觉编程大师!
【8月更文挑战第4天】QtCreator是一款强大的跨平台IDE,便于创建多平台应用。本教程教你如何在Windows环境下集成OpenCV库至Qt项目。首先,下载匹配MinGW的OpenCV预编译版并解压。接着,在QtCreator中新建或打开项目,并在.pro文件中添加OpenCV的头文件和库文件路径。确保编译器设置正确。随后编写测试代码,例如加载和显示图片,并进行编译运行。完成这些步骤后,你就能在QtCreator中利用OpenCV进行图像处理开发了。
614 6
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
1217 0
|
Java C++
jni编程(windows+JDK11+clion)
jni编程(windows+JDK11+clion)
220 1
【Windows内核驱动函数(1)】IoCreateSymbolicLink()-----创建符号链接函数
【Windows内核驱动函数(1)】IoCreateSymbolicLink()-----创建符号链接函数