搜尋字串的三種方法

2021-06-26 11:31:04 字數 2077 閱讀 6560

[cpp]file *fp=_tfopen(szxmlfilepath,l"rb");  

if (fp==null)  

return;  

fseek(fp,0,seek_end);  

uint nlen=ftell(fp);    

fseek(fp,0,seek_set);  

// 寬字元型別  

wchar_t* pstr_read = new

wchar_t[nlen/2+1];      //   分配空間  

memset(pstr_read,0,sizeof(wchar_t)*(nlen/2+1));  //   清空  

fread(pstr_read,1,nlen,fp);  

fclose(fp);  

file *fp=_tfopen(szxmlfilepath,l"rb");

if (fp==null)

return;

fseek(fp,0,seek_end);

uint nlen=ftell(fp);

fseek(fp,0,seek_set);

// 寬字元型別

wchar_t* pstr_read = new wchar_t[nlen/2+1]; // 分配空間

memset(pstr_read,0,sizeof(wchar_t)*(nlen/2+1)); // 清空

fread(pstr_read,1,nlen,fp);

fclose(fp);

pstr_read儲存的是字串,要在這個字串中判斷 是否包含子字串substr

方法一:轉換為csting 使用cstring::find()

[cpp]cstring substr=l"你好";  

cstring xmldata=pstr_read;  

delete pstr_read;  // 釋放空間  

if (xmldata.find(substr)!=-1)    

cstring substr=l"你好";

cstring xmldata=pstr_read;

delete pstr_read; // 釋放空間

if (xmldata.find(substr)!=-1)

方法二:使用字串搜尋函式_tcsstr()

[cpp]view plain

copy

print?

cstring substr=l"你好";  

if (_tcsstr(pstr_read,substr))    

cstring substr=l"你好";

if (_tcsstr(pstr_read,substr))

方法三: 使用kmp匹配演算法

[cpp]view plain

copy

print?

int next[20] =;  

void next(wchar_t* p,int *next)  

else

//p[j]!=p[k]

k=next[k];  

}  }  

//des是目標串,pat是模式串,len1和len2是串的長度

int kmp(wchar_t des,int len1,wchar_t pat,int len2)  

else

else

}  }  if(p < len2)//整個過程匹配失敗

return s-len2;  

}  

int next[20] =;

void next(wchar_t* p,int *next)  

左旋字串的三種方法

注 有效次數為 總次數 n 如上圖所示,假設對字串左旋6次和左旋2次,得到的結果是一樣的 思路 include include include include pragma warning disable 4996 遮蔽scanf出現的錯誤 char a abcd1234 變數定義成全域性較好 in...

NSString字串擷取三種方法

1.定義乙個字串a,擷取a 的某乙個專案組,複製給b,b必須是int型 nsstring a 1.2.30 int b a substringwithrange nsmakerange 4,2 intvalue nslog a n a nslog b d b 解析如下 substringwithra...

php反轉字串的三種方法

假設有字串abcd,用php實現字串翻轉 1.第一種php有自帶的函式strrev可以輕鬆實現 str abcd 第一種自帶strrev實現翻轉 echo strrev str 輸出效果 2.就是把分割字串到乙個陣列中,然後遍歷拼接 function joinstrrev str return ne...