Page List

Search on the blog

2011年4月30日土曜日

C++でsplit

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

以下のように使う。
int main() {
char str[] = ":blue:red:yellow:black:";

char *p = strtok(str, ":");

while (p != NULL) {
printf("[%s]\n", p);
p = strtok(NULL, ":");
}

return 0;
}
  char *p = strtok(分割対象文字列のアドレス, 分割文字);
のように使います。
但し、2回目以降は、
  char *p = strtok(NULL, 分割文字);
とします。
 NULLを指定することで、前に検索し終わった部分の次の文字列から検索を再開します。ちょっと変な仕様ですが、クラスをサポートしていないCの名残のような感じがします。

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

0 件のコメント:

コメントを投稿