【VC++】MFCにて,文字列をデミリタでぶった切る関数

PHPやら,C#で言うところの,split()関数ですな

なぜか,VC++,っつうか,MFCには,気の効いた関数なりメソッドなりが,準備されていない件

とある,ソフトでさっくり作ったもんで
このまんま,眠らせておくのもなんなんで
公開しまする

バグってても,ご容赦を,ってことで


void split(CString str, CString delim, CStringArray &result)
{
result.RemoveAll();

int indexback = 0;

CString st;

int i;
for(i = 0; i < str.GetLength(); i++)
{
if (str.GetAt(i) == delim.GetAt(0))
{
if ((i - indexback) == 0)
{
result.Add("");
}
else
{
st = str.Mid(indexback, i - indexback);
result.Add(st);
}
indexback = i + 1;
}
}

if ((i - indexback) != 0)
{
st = str.Mid(indexback, i - indexback);
result.Add(st);
}

}

void func()
{

CString st;
CStringArray aryst;

st = "1,2,3";

split(st, _T(","), aryst);

TRACE(aryst.GetAt(0));

}
[/cpp]

こんな感じで?