C++ Windows文件名排序(带有英文/中文+数字的混合排序)

例如,文件夹下包含这些文件名:

1.jpg
2.jpg
3.jpg
......
10.jpg
11.jpg

通用的排序方式按增序进行排序会得到这样的排序结果

1.jpg
10.jpg
11.jpg
2.jpg
3.jpg
......

原因在于字符串比较过程根据字符串中的字符进行比较,没有考虑到字符串中数字的逻辑意义。

Windows中有一个API专门用来解决字符串逻辑比较任务:StrCmpLogicalW

用法如下:

int StrCmpLogicalW(
    LPCWSTR psz1,
    LPCWSTR psz2
);

参数:

psz1
    [in] A pointer to the first null-terminated string to be compared
psz2
    [in] A pointer to the second null-terminated string to be compared

返回值:

Returns zero if the strings are identical
Returns 1 if the string pointed to by psz1 has a greater value than that pointed to by psz2
Returns -1 if the string pointed to by psz1 has a lesser value than that pointed to by psz2

相关链接:https://blog.csdn.net/yanghao58686763/article/details/6599157

https://blog.csdn.net/weixin_30600197/article/details/95660458?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

https://blog.csdn.net/weixin_34043301/article/details/85407116?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3

https://blog.csdn.net/weixin_30779691/article/details/98172833?depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromBaidu-7&utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromBaidu-7

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值