基本信息
原型:
CStringT Tokenize( PCXSTR pszTokens , int& iStart ) const;
功能:
從iStart位置取出字元串中含pszTokens分割符間的內容;
MFC實例:
CString str =_T("abc;efd;mfg");
vector<CString>s;
int pos = 0;
for(int i=0;i<3;i++)
{
s.push_back(str.Tokenize( “;” pos));
}
註:pos值是不斷變化的
那么s的內容就是 s[3 ] = {abc,efd,mfg};
tokenize string [string] string[];
根據第二個字元串做參考將第一個字元串進行分割。
參數
pszTokens:包含標記
分隔設定的字元串。 這些分隔設定順序並不重要。
iStart:開始搜尋的從零開始的索引。
返回值
包含當前標記值的 CStringT 對象。
備註 :
將 pszTokens 的字元指定將找到的標記可能的分隔 符。 在每次調用Tokenize函式開始對 iStart,導致分隔設定的"跳過",並返回包含當前標記的CStringT對 象,是字元串到下分隔設定。如果該字元串的末尾已到達,更新 iStart 的值為後面的位置關閉
分隔設定的或-1。 多個標記中打開目標字元串的其餘部分由一系列調用Tokenize,使用 iStart 記錄在字元串下一個標記要讀取的位置。 當沒有更多的標記函式返回一個
空字元串,並 iStart 將設定為-1。 Tokenize不修改目標字元串。
實例:
// typedef CStringT CAtlString;
CAtlString str(_T("%First Second#Third"));
CAtlString resToken;
int curPos = 0;
resToken= str.Tokenize(_T("% #"),curPos);
while (resToken != _T(""))
{
_tprintf_s(_T("Resulting token: %s\n"), resToken);
resToken = str.Tokenize(_T("% #"), curPos);
};
從此示例的輸出如下所示:
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
要求
tokenize string [string] string[]
這個命令根據第二個字元串做參考將第一個字元串進行分割。如果沒有提供第二個參考字元串,系統將默認用空格分割第一個字元串。
註:分割的依據並非第二個字元串整體,而是第二個字元串中的任意字元。
由此產生的分割好的字元串存儲在第三個字元串數組中。在此過程中的返回值是一個整數值,為分割了多少個字元串。
string $buffer[];
$numTokens = `tokenize "A/B//C/D" "//" $buffer`;
// Buffer will contain 4 strings, not 2: "A", "B", "C", "D"
字元串將被分割為四個字元串(不是兩個),分別為:"A", "B", "C", "D"
// and $numTokens will be 4.
返回值為4
string $buffer[];
$numTokens = tokenize("Mildred Pierce Femme Fatale", $buffer);
// Buffer will contain 4 strings: "Mildred", "Pierce", "Femme", and "Fatale."
字元串將被分割為四個字元串,分別為:"Mildred", "Pierce", "Femme", 和 "Fatale"
// and $numTokens will be 4.
返回值為4
string $buffer[];
$numTokens = `tokenize "testing=non-default separators" "=" $buffer`;
// Buffer will contain 2 strings: "testing" and "non-default separators."
字元串將被分割為兩個字元串,分別為:"testing" 和 "non-default separators"
// and $numTokens will be 2.
返回值為2
參考介紹
CString