Page List

Search on the blog

2011年4月30日土曜日

C++でsplit

最近、C/C++でもJavaのsplit()相当の標準関数があることを知った。
strtok()という関数。

以下のように使う。
  1. int main() {  
  2.     char str[] = ":blue:red:yellow:black:";  
  3.   
  4.     char *p = strtok(str, ":");  
  5.   
  6.     while (p != NULL) {  
  7.         printf("[%s]\n", p);  
  8.         p = strtok(NULL, ":");  
  9.     }  
  10.   
  11.     return 0;  
  12. }  
  char *p = strtok(分割対象文字列のアドレス, 分割文字);
のように使います。
但し、2回目以降は、
  char *p = strtok(NULL, 分割文字);
とします。
 NULLを指定することで、前に検索し終わった部分の次の文字列から検索を再開します。ちょっと変な仕様ですが、クラスをサポートしていないCの名残のような感じがします。

stringに対して同じことをしたい場合は、c_str()メンバ関数で一旦(const char *)に変換してから上記関数を使うといいです。

0 件のコメント:

コメントを投稿