strtok
指定したデリミタを使用した文字列を一連のトークンに解析します。
string strtok(const char *string, const char *delimiter)
strtok
関数は、指定したデリミタで区切られた文字列を使用して、文字列を一連のトークンに解析します。最初にstrtok
をコールするときに、解析する文字列を指定します。その後の各コールでは、次のトークンを取得するためにNULLとして文字列を指定します。それぞれのコールには、異なるデリミタを指定できます。strtok
が文字列の走査に使用する内部ポインタは、同じプローブを複数回使用可能にする場合にのみ有効です。strtok
関数は、トークンがなくなるとNULLを返します。
例7-53 カンマ区切りの文字列をトークンに分割するためにstrtokを使用する方法。
この例では、strtok
を使用して、カンマ区切りの文字列をトークンに分割します。DTraceにはwhileループのようなフロー制御構造が含まれていないため、述語を使用してこの機能をエミュレートし、各トークンをステップ処理する必要があります。この例は、文字列によって生成された最初の2つのトークンを調べる方法を示しています。各述語では、次のトークンを取得して、それが文字列の終わりを表すNULL値でないことを確認します。
BEGIN
{
this->str = "Carrots,Barley,Oatmeal,Corn,Beans";
}
BEGIN
/(this->field = strtok(this->str, ",")) == NULL/
{
exit(1);
}
BEGIN
{
printf("First token: %s\n", this->field);
}
BEGIN
/(this->field = strtok(NULL, ",")) == NULL/
{
exit(2);
}
BEGIN
{
printf("Second token: %s\n", this->field);
exit(0)
}