CStringT::Tokenize
更新 : 2007 年 11 月
対象文字列で次のトークンを検索します。
CStringT Tokenize(
PCXSTR pszTokens,
int& iStart
) const;
パラメータ
pszTokens
トークン区切り記号を含んでいる文字列。これらの区切り記号の順序は重要ではありません。iStart
検索を開始する位置を示す、0 から始まるインデックス番号。
戻り値
現在のトークン値を保持している CStringT オブジェクトを返します。
解説
Tokenize 関数は、対象文字列で次のトークンを検索します。pszTokens 内の文字セットは、検索対象のトークンで見つかる可能性のある区切り文字を指定します。Tokenize の呼び出しごとに、関数は iStart から開始し、先頭の区切り記号を読み飛ばし、現在のトークンを含む CStringT オブジェクトを返します。このトークンは、最大で次の区切り文字までの文字列です。iStart の値は、終端の区切り文字の次の位置に更新されます。文字列の終端に達した場合は -1 に更新されます。Tokenize を連続して呼び出し、iStart を使用して次のトークンを読み取る文字列の位置を追跡すことで、残りの対象文字列から複数のトークンが取り出されます。トークンがなくなった場合、関数は空の文字列を返し、iStart は -1 に設定されます。
strtok_s、_strtok_s_l、wcstok_s、_wcstok_s_l、_mbstok_s、_mbstok_s_l などの CRT のトークン化関数とは異なり、Tokenize は対象文字列を変更しません。
使用例
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> 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
必要条件
ヘッダー : cstringt.h