void ExtractTokensToArray (CString s, CStringArray& OutputArray, CString Delimiters) { int Hit; int EarliestHit; int DelimiterIndex; CString sExtract; BOOL MoreTokens = TRUE; BOOL GotToken = FALSE; TCHAR CurrDelimiter; while (MoreTokens) { GotToken = FALSE; EarliestHit = s.GetLength(); // Trawl the string looking for the leftmost (earliest) hit in // the list of valid separators. for (DelimiterIndex = 0; DelimiterIndex < Delimiters.GetLength(); DelimiterIndex++) { CurrDelimiter = Delimiters [DelimiterIndex]; Hit = s.Find (CurrDelimiter); if (Hit != -1) { if (Hit < EarliestHit) { EarliestHit = Hit; } GotToken = TRUE; } } if (GotToken) { sExtract = s.Left(EarliestHit); s = s.Right(s.GetLength() - EarliestHit - 1); OutputArray.Add(sExtract); } else { // Trailing token. MoreTokens = FALSE; OutputArray.Add(s); } } }