機械翻訳について

strtok

指定したデリミタを使用した文字列を一連のトークンに解析します。

string strtok(const char *string, const char *delimiter)

strtok関数は、指定したデリミタで区切られた文字列を使用して、文字列を一連のトークンに解析します。 最初にstrtokをコールするときに、解析する文字列を指定します。 その後の各コールでは、次のトークンを取得するためにNULLとして文字列を指定します。 それぞれのコールには、異なるデリミタを指定できます。 strtokが文字列の走査に使用する内部ポインタは、同じプローブを複数回使用可能にする場合にのみ有効です。 strtok関数は、トークンがなくなるとNULLを返します。

例8-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)
 }