区切り文字を使用して文字列をトークン化するためにメソッドを使用CString::Tokenize
していますが、奇妙なことに気付きました。文字列内のすべてのトークンを取得したいので、ループ内の文字列でそのメソッドを呼び出します。これが私のコードです:
CString strToken;
for(int nTokenPos = 0; nTokenPos < dialog->myValue.GetLength(); nTokenPos++)
{
//TRACE( "The Size of the string is %d\n", dialog->myValue.GetLength());
TRACE( "Iteration No %d\n",nTokenPos);
strToken = dialog->myValue.Tokenize(_T("X"), nTokenPos);
strToken+="\n";
OutputDebugString(strToken);
}
注:dialog->myValue
は、トークン化する文字列です。そのコードを「99X1596」(たとえば)でテストすると、出力は次のようになります。
Iteration No 0
99
Iteration No 4
596
別の例: '4568X6547' 出力:
Iteration No 0
4568
Iteration No 6
547
区切り文字「X」の後の最初の文字を無視する理由もわかりません。また、1回の反復をスキップします!