我们最熟悉的字符串比较函数莫过于strcmp了,但这个函数仅仅是根据字符进行比较,没有考虑字符串的逻辑意义,为此微软为我们提供了一个StrCmpLogicalW函数,它比较数字时不将其视为文本而是视为数值。

我们可以从下列这个简单的字符串数组排序的结果看出这两个函数的区别:

使用StrCmpLogicalW进行比较的结果:

字符串逻辑比较函数---StrCmpLogicalW的模拟实现2string
字符串逻辑比较函数---StrCmpLogicalW的模拟实现3string
字符串逻辑比较函数---StrCmpLogicalW的模拟实现20string
字符串逻辑比较函数---StrCmpLogicalW的模拟实现st2ring
字符串逻辑比较函数---StrCmpLogicalW的模拟实现st3ring
字符串逻辑比较函数---StrCmpLogicalW的模拟实现st20ring
字符串逻辑比较函数---StrCmpLogicalW的模拟实现string2
字符串逻辑比较函数---StrCmpLogicalW的模拟实现string3
字符串逻辑比较函数---StrCmpLogicalW的模拟实现string20
字符串逻辑比较函数---StrCmpLogicalW的模拟实现
  使用简单的strcmp函数进行比较的结果:

字符串逻辑比较函数---StrCmpLogicalW的模拟实现20string
字符串逻辑比较函数---StrCmpLogicalW的模拟实现2string
字符串逻辑比较函数---StrCmpLogicalW的模拟实现3string
字符串逻辑比较函数---StrCmpLogicalW的模拟实现st20ring
字符串逻辑比较函数---StrCmpLogicalW的模拟实现st2ring
字符串逻辑比较函数---StrCmpLogicalW的模拟实现st3ring
字符串逻辑比较函数---StrCmpLogicalW的模拟实现string2
字符串逻辑比较函数---StrCmpLogicalW的模拟实现string20
字符串逻辑比较函数---StrCmpLogicalW的模拟实现string3
字符串逻辑比较函数---StrCmpLogicalW的模拟实现

下面这段代码就是模仿这个函数的实现:

字符串逻辑比较函数---StrCmpLogicalW的模拟实现#include <iostream>
字符串逻辑比较函数---StrCmpLogicalW的模拟实现#include 
<afx.h>
字符串逻辑比较函数---StrCmpLogicalW的模拟实现#include 
"deelx.h"
字符串逻辑比较函数---StrCmpLogicalW的模拟实现
using namespace std;
字符串逻辑比较函数---StrCmpLogicalW的模拟实现
字符串逻辑比较函数---StrCmpLogicalW的模拟实现
#define MATCH_NUMBERS "[+-]?\\d+(\\.\\d+)?"
字符串逻辑比较函数---StrCmpLogicalW的模拟实现
字符串逻辑比较函数---StrCmpLogicalW的模拟实现
字符串逻辑比较函数---StrCmpLogicalW的模拟实现 
int Compare(CString csText1, CString csText2)

代码中使用了一个开源的正则表达式引擎,DEELX 正则表达式引擎

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2021-08-12
  • 2022-12-23
  • 2022-03-12
猜你喜欢
  • 2021-10-01
  • 2021-06-24
  • 2022-12-23
  • 2021-07-07
  • 2022-02-07
  • 2021-10-04
相关资源
相似解决方案