文字列を配列に格納する(区切りは「,」)

Last-modified: 2007-10-21 (日) 17:33:39

概要

 ","でつながれた文字を配列に入れていく関数を作ってみます。
 適当なので、1次元のみの対応。しかも領域の確保はしません。

 

void StringAsIn(ref array@string asX ,string szX)
{
 int nA = 0;//コピー開始
 int nL = 0;	//ループ用
 int nX = 0;	//コピーする要素数用
 string szA;		//コピーする文字
  for(;;)
     if(szX.GetPart(nL,1) == ",")
     {
      asX[nX] =    szX.GetPart(nA,nL - nA);
      ++nX;  	nA = nL + 1;
      }
        if(nL == szX.Length())
        {
         asX[nX] = szX.GetPart(nA,nL - A);
         return;
         }
  ++nL;}
return;
}

 作ったら動かしてみましょう。

void game_main(void)
{
array@string asX[100];
 StringAsIn(asX,"ドーナツ,レモン,みんな,ファイト,空の色");
S(asX[2]);A;
}
//"みんな"と出力されます

 

解説

 forで文字列を一文字ずつ調べていき、","が出た時点でそこまでの文字列をコピーして配列に格納します。
 コピーしたらまた次の","まで調べていき、以下繰り返し。
 文字列の最後まで来た時点で、最後まで文字列をコピーして格納します。