VC中字串取子串總結

2021-06-05 07:57:42 字數 2035 閱讀 3843

一。前言

程式中經常會遇到要處理用某些符號(如空格,或「, ; . | /t」等)分隔的字串的問題,我在此做了一些總結和比較。

二。處理方法

1. 用mfc cstring之find處理字串

// 以下方法將乙個字串分解後放到乙個cstringarray中:

void extractstring(cstringarray& arr, const cstring strsrc, const cstring sep = "/r/n" )

arr.add(str); // think }

// btw,cstring提供了trimleft和trimright,卻不能一次trimall,並返回trim後的字串,我寫了乙個:

cstring trimall(cstring str, cstring strtrim = " ")

// 同樣是用find處理字串,和以上處理方式稍有不同,試比較:

void extractstring2(cstringarray& arr, const cstring strsrc, const cstring sep = "/r/n" )}}

2. 用mfc未公開函式afxextractsubstring 處理

// 以下為函式定義及說明:

// afxextractsubstring 從乙個字元(chsep)分隔的字串(lpszfullstring)中取出第isubstring個子串,輸出到rstring

bool afxapi afxextractsubstring (  

cstring& rstring,                 // 用於輸出子串

lpctstr lpszfullstring,     // 被分隔的字串

int isubstring,                      // zero-based substring index

tchar chsep = '/n'           // 分隔符)

// eg:

cstring sdesc= "張三|男|28|醫生";

cstring soccupation;

if(afxextractsubstring ( soccupation, sdesc, 3, '|'))

cout << "職業:" << soccupation << endl;

3. 用c語言之strtok函式處理

#include

void test()

free(temp);}

4. 其它方法

當然既然能用mfc的find函式進行處理,也可能string的find處理,甚至可用最原始的字元比較,再配合一些字串處理函式進行處理。

但我覺得我提供的使用find類函式處理字串的2種方法非常常用,可供參考。

三。比較

處理方法 優

劣用mfc cstring之find處理字串

分隔符可是是字元或字串;

在mfc中是最常用的方法。

僅限於mfc中使用

用afxextractsubstring 處理

完全封裝,呼叫簡單;

分隔符可是是字元或字串。

僅限於mfc中使用,且未公開;

一般用於取其中某個子串。

用c語言之strtok函式處理

分隔符可以同時指定多個字元,可用於分隔符不是很確定的情況。

分隔符只能是字元;

c庫函式,在c相容開發環境中通用。

四。後記

以上只是我從個人的角度做的乙個小結(我用mfc/c++多一些),難免有失偏頗,在bcb/delphi中肯定也有對應的方式方法,不在本文的討論範圍內,這裡就不再贅述。

DP總結 字串 子串

題目描述 有兩個僅包含小寫英文本母的字串a和b。現在要從字串a中取出k個互不重疊的非空子串,然後把這k個子串按照其在字串a中出現的順序依次連線起來得到乙個新的字串,請問有多少種方案可以使得這個新串與字串b相等?注意 子串取出的位置不同也認為是不同的方案。由於答案可能很大,所以這裡要求輸出答案對1,0...

字串子串

定義變數 string this is a test 取字串長度,空格也算 從positon處提取字串,positon從0 開始.也可以認為是提取postion之後字串,不算position處 從position位置處取length長的字串.也可以 echo cut c 1 4,取1 4的字元,1 ...

字串 字串中數字子串的求和

題目 給定乙個字串str,求其中全部數字串所代表的數字之和。要求如下 忽略小數點字元,例如 a1.3 其中包含兩個數字1和3.如果緊貼數字子串的左側出現字元 當連續出現的數量為奇數時,則數字視為負,連續出現的數量為偶數時,則數字視為正。例如,a 1bc 12 其中包含數字 1和12。舉例 str a...