当前位置: 首页 > news >正文

[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 能够识别日文字符,于是返回正确结果。

相关文章:

  • SSH用户等效性配置
  • TPL Part5 -- 循环和PLINQ
  • 再说Ucweb
  • 使用Xamarin + C#开发应用 -- 使用sqlite做本地存储
  • C# + Xamarin 开发应用-- Call API时遇到错误: Error: NameResolutionFailure
  • 使用C# + Xamarin开发应用-- 使用json.net 遇到错误 Object non reference
  • Asp.net MVC中1个小技巧- HTML 扩展方法 AssignIfTrue
  • MD5 Encrypt...
  • 《ASP.NET程序设计教程》目录
  • MongoDb C#Driver 模糊查询
  • C# + Xamarin开发Android应用 --- Tab的实现
  • Nebula3 SDK (Apr 2009)更新内容
  • 在Google Map中显示多个Marker并画出Polygon
  • SQL2005使用CLR函数获取行号
  • Popup显示谷歌地图Marker
  • Apache Spark Streaming 使用实例
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Leetcode 27 Remove Element
  • Linux后台研发超实用命令总结
  • Mysql5.6主从复制
  • Rancher-k8s加速安装文档
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分类模型——Logistics Regression
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 深度学习在携程攻略社区的应用
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • !!java web学习笔记(一到五)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (03)光刻——半导体电路的绘制
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (算法)前K大的和
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)visual stdio 书签功能介绍
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 命令行参数包含应用程序路径吗?
  • /proc/vmstat 详解
  • ::
  • @JSONField或@JsonProperty注解使用
  • @RequestBody的使用
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [].slice.call()将类数组转化为真正的数组
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [ACM] hdu 1201 18岁生日
  • [AIGC codze] Kafka 的 rebalance 机制
  • [Android] Amazon 的 android 音视频开发文档
  • [Android] 修改设备访问权限
  • [BROADCASTING]tensor的扩散机制