日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
wcstok |
指定されたワイド文字列の中でテキスト・トークンを探します。
#include <wchar.h>関数バリアント wcstok関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _wcstok32と _wcstok64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.9 節を参照してください。wchar_t *wcstok (wchar_t *ws1, const wchar_t *ws2); (XPG4)
wchar_t *wcstok (wchar_t *ws1, const wchar_t *ws2, wchar_t **ptr); (ISO C)
ws1
ゼロ個以上のテキスト・トークンを含んだワイド文字列へのポインタ。ws2
1 つ以上のワイド文字から構成される区切り文字列へのポインタ。区切り文字列は呼び出しごとに異なっていても構いません。ptr
ISO C 標準のみ。ws1 が NULL の場合にのみ使用されます。 ptr は, wcstokが同じワイド文字列のスキャンを続行するために必要な情報を格納する,呼び出し元が提供する wchar_tポインタです。
wcstokの一連の呼び出しにより, ws1 がポイントするワイド文字列を, ws2 がポイントするワイド文字列に含まれているワイド文字で区切られたトークンのシーケンスに分割することができます。wcstok関数は,次の呼び出しがあるまでのワイド文字列中の自分の位置を保持しており,その後の呼び出しがあったときに,前の呼び出しで識別されたテキスト・トークンの次のテキスト・トークンを識別してワイド文字列の中を移動します。
ws1 の中のトークンは, wcstokが ws1 に挿入する null 文字によって区切られます。このため, ws1 は constオブジェクトであってはなりません。
以下のセクションでは, wcstokの XPG4 標準および ISO C 標準インタフェースの違いを説明します。
wcstok関数の最初の呼び出しでは,ワイド文字列の中で,ws2 がポイントする区切り文字列に含まれていない最初の文字が検索されます。最初の呼び出しは,最初のトークンの最初のワイド文字へのポインタを返し, ws1 の中で,返されたトークンの直後に null ワイド文字を書き込みます。
wcstokのそれ以降の呼び出しでは, ws2 がポイントする区切り文字列に含まれている ワイド文字が検索されます。個々の呼び出しで (第 1 引数として値 NULL を指定),最初に ws1 がポイントしていた文字列の中の次のトークンへのポインタが返されます。文字列にトークンが残っていなかった場合, wcstokは NULL ポインタを返します。
シーケンスの中の最初の呼び出しでは, ws1 はワイド文字列をポイントしています。同じ文字列に対するそれ以降の呼び出しでは,ws1 は NULL です。 ws1 が NULL の場合,ptr がポイントする値は,同じワイド文字列に対するそれ以前の呼び出しによって格納された値と一致します。それ以外の場合,ptr がポイントする値は無視されます。
シーケンスの中の最初の呼び出しは, ws1 がポイントするワイド文字列の中で, ws2 がポイントしている現在の区切りワイド文字列に含まれていない最初のワイド文字を検索します。そのようなワイド文字が見つからなかった場合には, ws1 がポイントするワイド文字列にはそのようなトークンが含まれていないということになり, wcstokは NULL ポインタを返します。
その後, wcstok関数は,現在の区切りワイド文字列に含まれているワイド文字を探します。そのようなワイド文字が見つからなかった場合には,現在のトークンは ws1 がポイントするワイド文字列の終わりまで続いていることになり,同じワイド文字列に対するそれ以降のトークンの検索は NULL ポインタを返します。そのようなワイド文字が見つかった場合には, null ワイド文字で上書きされ,現在のトークンは終了します。
どのケースでも, wcstokは, ptr がポイントするポインタに必要な情報を格納し, ws1 に対して NULL ポインタ, ptr に対して変更なしのポインタ値を指定したそれ以降の呼び出しが, null ワイド文字 (存在する場合) で上書きされた要素の直後から検索を開始するようにします。
x トークンの最初の文字へのポインタ。 NULL トークンが見つからなかったことを示します。
値 |
#1 |
---|
/* XPG4 version of wcstok call */ #include <wchar.h> #include <string.h> #include <stdio.h> main() { wchar_t str[] = L"...ab..cd,,ef.hi"; printf("|%S|\n", wcstok(str, L".")); printf("|%S|\n", wcstok(NULL, L",")); printf("|%S|\n", wcstok(NULL, L",.")); printf("|%S|\n", wcstok(NULL, L",.")); } |
#2 |
---|
/* ISO C version of wcstok call */ #include <wchar.h> #include <string.h> #include <stdio.h> main() { wchar_t str[] = L"...ab..cd,,ef.hi"; wchar_t *savptr = NULL; printf("|%S|\n", wcstok(str, L".", &savptr)); printf("|%S|\n", wcstok(NULL, L",", &savptr)); printf("|%S|\n", wcstok(NULL, L",.", &savptr)); printf("|%S|\n", wcstok(NULL, L",.", &savptr)); } |
この例のプログラムを実行すると,次の結果が生成されます。
$ $ RUN WCSTOK_EXAMPLE |ab| |.cd| |ef| |hi| $ |
目次 | 索引 |
|