目录
一、Tokenize
Finds the next token in a target string CStringT Tokenize( PCXSTR pszTokens, int& iStart ) const; Parameters pszTokens A string containing token delimiters. The order of these delimiters is not important. iStart The zero-based index to begin the search. Return Value A CStringT object containing the current token value.
示例1、
//typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
CAtlString str( "%First Second#Third" );
CAtlString resToken;
int curPos= 0;
resToken= str.Tokenize("% #",curPos);
while (resToken != "")
{
printf("Resulting token: %s\n", resToken);
resToken= str.Tokenize("% #",curPos);
};
Output
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
示例2、
CString strTest = TEXT("JHSFSDHS|HASDFJKSKF|5465465|DBHBASD");
CStringArray szArray;
int curPos= 0;
while(1)
{
CString resToken= str.Tokenize(_T("|"), curPos);
if(resToken.IsEmpty())
break;
szArray.Add(resToken);
}
示例3、
CString strTest = TEXT("JHSFSDHS|HASDFJKSKF|5465465|DBHBASD");
CStringArray arr;
LPTSTR p =_tcstok( strTest.GetBuffer() , TEXT("|") );
while( p != 0 )
{
arr.Add( p);
p = _tcstok( 0 , TEXT("|") );
}
strTest.ReleaseBuffer();
示例4、
CString classStr=g_ParseKeyStr;//L"眼睛,眉毛,鼻子,3";//类别信息
std::vector<CString> keyVec;
int curPos=0;
CString keyStr;
keyStr=classStr.Tokenize(L",,、",curPos);
while(!keyStr.IsEmpty ())
{
keyVec.push_back(keyStr);
keyStr=classStr.Tokenize(L",,",curPos);
}
CString lastStr;
int nNeedNum=keyVec.size (); //需同时满足的关键字个数
int nKeyNum=keyVec.size ();//关键字的个数
lastStr=keyVec.at(keyVec.size ()-1);
if(lastStr.SpanIncluding (L"1234567890")==lastStr)
{
//最后一个数为数字
nNeedNum=_wtoi(lastStr);
nKeyNum--;
}
if (nNeedNum>nKeyNum)
{
nNeedNum=nKeyNum;
}