读书人

车牌模糊比对,该如何处理

发布时间: 2012-05-14 15:24:34 作者: rapoo

车牌模糊比对
如有一个车牌:京A12345

用户可能输入:京A12***,京A123**,京A123*5,京A**345 进行模糊比对,*的位置不固定。

我怎么判断 京A12***,京A123**,京A123*5,京A**345等车牌,除了*之外的汉字或者数字都相同,且位置一样。

目前我是这样想的,如果车牌X为京A12345,要与Y车牌京A123*5进行对比,我首先把Y车牌京A123*5中的,*位置取出来,然后把X车牌京A12345中同位置的数字4替换成*,然后把替换后的X车牌京A123*5与Y车牌京A123*5比较,是相同的。

也就是车牌模糊比对,如果出了*之外的所有数字和汉字都相同,则记录下来。X车牌京A12345

不知道我表述的是否清楚呢?


我用VS2010开发,先前开了一个类似的帖子,其中有人给出的代码在2010下不能编译,郁闷那!!!

[解决办法]
正则表达式,boost库里有。
[解决办法]
京A12345
int g,h,i,j,k,m,n;
int match[7];//等于车牌号的位数
int matchNo;//匹配个数,就是两个车牌有几个号码相同
CString CardNo_A,CardNo_B;//车牌号A和B
char CardNo_c_A[7],CardNo_c_B[7];
CardNo_c_A=CardNo_A;//好象这么赋值可以,如果不可以,你用(LPTSTR)(LPCTSTR)CardNo;试试
CardNo_c_B=CardNo_B;
matchNo=0;
if(CardNo_c_A[0]==CardNo_c_B[0])
{
match[0]=1;
matchNo++;
}
else
match[0]=0;
if(CardNo_c_A[1]==CardNo_c_B[1])
{
match[1]=1;
matchNo++;
}
else
match[1]=0;
....
if(CardNo_c_A[6]==CardNo_c_B[6])
{
match[6]=1;
matchNo++;
}
else
match[6]=0;
现在两个车牌有几个相同的号也知道了,在什么位置也都知道了,剩下的就是看你想怎么处理了
[解决办法]

C/C++ code
说一下个人思路.. 可以逐个比较..遇到*就跳过 不比较..代码好下    char buf[]  ="A123456";    char buf1[] ="A**3456";    int len = strlen(buf);    BOOL bflag = TRUE;    for(int i = 0 ; i < len ; i++)    {        if(buf1[i]=='*')            continue;        if(buf[i] != buf1[i])        {            bflag = FALSE;                        break;        }    }
[解决办法]
探讨
to:xufan123123
在VS2010下这样赋值
char buf[] ="A123456";
char buf1[] ="A**3456";
会报错?

读书人网 >VC/MFC

热点推荐