株式会社エス・スリー・フォー

3.6 トークン化

RWCTokenizer クラスを使って、文字列を任意の空白類によって区切られたトークンに分解することができます。次に例を示します。

#include <rw/ctoken.h>
#include <rw/cstring.h>
#include <rw/rstream.h>

main(){
  RWCString a("a string with five tokens");

  RWCTokenizer next(a);

  int i = 0;

  // ヌル文字列が返されるまで継続する:
  while( !next().isNull() ) i++;

  cout << i << endl;
  return 0;
}

出力:

5

このプログラムは、文字列中のトークン数を数えます。RWCTokenizer クラスの関数呼び出し演算子は、他の Tools.h++ の反復子と同様に、「次のトークンに進み、それを RWCSubString として返す」という意味に多重定義されています。それ以上トークンがない場合は、ヌルの部分文字列を返します。RWCSubString クラスは、部分文字列がヌルの文字列である場合に TRUE を返すメンバ関数 isNull() を持ちます。これを使って、ループから抜けることができます。RWCTokenizer については、『Tools.h++ Class Reference』を参照してください。