原型:
CStringT Tokenize( PCXSTR pszTokens , int& iStart ) const;
功能:
从iStart位置取出字符串中含pszTokens分割符间的内容;
MFC实例:
CString str =_T("abc;efd;mfg");
vector<CString>s;
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
要求
Header: <cstringt.h>
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
