Manpages

名 前

wcstok − ワ イ ド 文 字 文 字 列 を ト ー ク ン に 分 割 す る

書 式

#include <wchar.h>

wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);

説 明

wcstok() 関 数 は 、 strtok(3) 関 数 に 対 応 す る ワ イ ド 文 字 関 数 に 、 マ ル チ ス レ ッ ド セ ー フ の 動 作 を さ せ る た め の 引 き 数 を 追 加 し た も の で あ る 。 こ の 関 数 を 用 い て 、 ワ イ ド 文 字 文 字 列 wcs を ト ー ク ン に 分 解 す る こ と が で き る 。 こ こ で 、 ト ー ク ン は delim に 列 挙 さ れ て い る 文 字 を 含 ま な い 部 分 文 字 列 と し て 定 義 さ れ る 。 検 索 は wcs が NULL で な け れ ば wcs か ら 開 始 さ れ 、 wcs が NULL な ら ば *ptr か ら 開 始 さ れ る 。 ま ず 、 全 て の 区 切 り ワ イ ド 文 字 が ス キ ッ プ さ れ る 。 つ ま り 、 delim に 含 ま れ る ワ イ ド 文 字 を 超 え る よ う に ポ イ ン タ ー が 前 に 進 め ら れ る 。 ワ イ ド 文 字 文 字 列 の 終 わ り に 達 し た ら 、 wcstok() は NULL を 返 し て ト ー ク ン が 全 く 見 つ か ら な か っ た こ と を 示 し 、 こ の 後 に wcstok() を 呼 び 出 し て も NULL が 返 さ れ る よ う に *ptr に 適 切 な 値 を 設 定 す る 。 そ れ 以 外 の 場 合 に は 、 wcstok() 関 数 は ト ー ク ン の 先 頭 を 識 別 し 、 こ れ を 指 す ポ イ ン タ ー を 返 す 。 た だ し こ れ を 行 う 前 に 、 ト ー ク ン の 後 に あ る 、 delim に 含 ま れ て い る 文 字 を ヌ ル ワ イ ド 文 字 (L'\0') に 置 き 換 え る こ と に よ っ て ト ー ク ン を 0 で 終 端 さ せ る 。 さ ら に *ptr を 更 新 し 、 後 で wcstok() を 呼 び 出 し た 際 に 、 識 別 さ れ た ト ー ク ン の 続 き か ら 検 索 で き る よ う に す る 。

返 り 値

wcstok() 関 数 は 次 の ト ー ク ン へ の ポ イ ン タ ー を 返 す 。 ト ー ク ン が 見 つ か ら な け れ ば NULL を 返 す 。

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) 関 数 wcstok() は ス レ ッ ド セ ー フ で あ る 。

準 拠

C99.

注 意

関 数 に 与 え た ワ イ ド 文 字 列 wcs は 、 関 数 の 動 作 に よ っ て 完 全 に 書 き 換 え ら れ る 。

以 下 の コ ー ド は 、 ワ イ ド 文 字 文 字 列 に 含 ま れ る ト ー ク ン を 取 り 出 し な が ら ル ー プ す る 。

wchar_t *wcs = ...;
wchar_t *token;
wchar_t *state;
for (token = wcstok(wcs, " \t\n", &state);
token != NULL;
token = wcstok(NULL, " \t\n", &state)) {
... }

関 連 項 目

strtok(3), wcschr(3)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。