【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));

}

こんな感じで?

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください