使用cstring實現中文字串模糊匹配

小魏的馬仔發表於2016-04-26

CString::Find

名稱

CString::Find

編輯本段作用

在一個較大的字元串中查詢字元或子字串
int Find( TCHAR ch ) const;
int Find( LPCTSTR lpszSub ) const;
int Find( TCHAR ch, int nStart ) const;
int Find( LPCTSTR pstr, int nStart ) const;

編輯本段返回值

返回此CString物件中與需要的子字串或字元匹配的第一個字元的從零開始的索引;如果沒有找到子字串或字元則返回-1。

編輯本段引數

ch                   要搜尋的單個字元。
lpszSub           要搜尋的子字串。
nStart              字元串中開始搜尋的字元的索引,如果是0,則是從頭開始搜尋。如果nStart不是0,則位於nStart之前的字元不包括在搜尋之內。
pstr                 指向要搜尋的字串的指標

編輯本段說明

此成員函式用來在此字串中搜尋子字串的第一個匹配的字元。函式的過載可以接收單個字元(類似於執行時函式strchr)和字串(類似於strstr)。

編輯本段示例

//下面演示第一個例子
// CString::Find( TCHAR ch )
CString s( "abcdef" );
int  n = s.Find( 'c' );        // 結果 n = 2
int  f = s.Find( "de" ) ;    // 結果 f = 3
ASSERT( n == 2 );
ASSERT( f == 3 );
// 下面演示第二個例子
// CString::Find(TCHAR ch,int nStart)
CString str("The stars are aligned");
int n = str.Find('e',2);         //結果 n = 2


實現中國工商銀行模糊匹配:
BOOL OcrForLogo::isGongHangLogo()
{
//根據字串結果進行模糊匹配
BOOL isGHFlag=false;
int zhong,guo,gong,shang,yin,hang;
int n;
zhong = ocrStr.Find("中");
guo = ocrStr.Find("國");
gong = ocrStr.Find("工");
shang = ocrStr.Find("商");
yin = ocrStr.Find("銀");
hang = ocrStr.Find("行");
if(gong!=-1)
{
if(zhong!=-1)
{
n = gong-zhong;
if(n==4)
{
isGHFlag=true;
}
else
isGHFlag=false;
}
if(guo!=-1)
{
n = gong-guo;
if(n==2)
{
isGHFlag=true;
}
else
isGHFlag=false;
}
if(shang!=-1)
{
n = shang-gong;
if(n==2)
{
isGHFlag=true;
}
else
isGHFlag=false;
}
if(yin!=-1)
{
n = yin-gong;
if(n==4)
{
isGHFlag=true;
}
else
isGHFlag=false;
}
if(zhong!=-1)
{
n = hang-gong;
if(n==6)
{
isGHFlag=true;
}
else
isGHFlag=false;
}
}
else
{
isGHFlag=false;
}


return isGHFlag;
}


相關文章