Manpages

名 前

mbrtowc − マ ル チ バ イ ト 列 を ワ イ ド 文 字 に 変 換 す る

書 式

#include <wchar.h>

size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);

説 明

こ の 関 数 が 用 い ら れ る 場 合 、 通 常 s が NULL で な く pwc も NULL で な い 。 こ の 場 合 は 、 mbrtowc() 関 数 は s か ら 始 ま る 最 大 n バ イ ト の マ ル チ バ イ ト 文 字 を 検 査 し て 、 次 の 完 全 な マ ル チ バ イ ト 文 字 列 を 取 り 出 し 、 そ れ を ワ イ ド 文 字 に 変 換 し て *pwc に 格 納 す る 。 同 時 に シ フ ト 状 態 *ps を 更 新 す る 。 変 換 し た ワ イ ド 文 字 が L'\0' (ヌ ル ワ イ ド 文 字 ) で な け れ ば 、 s か ら 消 費 す る バ イ ト 数 を 返 す 。 変 換 し た ワ イ ド 文 字 が L'\0' の 場 合 に は シ フ ト 状 態 *ps を 初 期 状 態 に 戻 し て 0 を 返 す 。

s か ら 始 ま る n バ イ ト が 完 全 な マ ル チ バ イ ト 文 字 を 含 ん で い な い 場 合 に は 、 mbrtowc() は (size_t) −2 を 返 す 。 マ ル チ バ イ ト 文 字 列 に 冗 長 な シ フ ト シ ー ケ ン ス が 含 ま れ て い る と 、 n >= MB_CUR_MAX の 時 に も こ の よ う な こ と が 起 こ り え る 。

s か ら 始 ま る マ ル チ バ イ ト 文 字 列 が 、 次 の 完 全 な 文 字 の 前 に 不 正 な マ ル チ バ イ ト 列 を 含 ん で い る 場 合 に は 、 mbrtowc() は (size_t) −1 を 返 し 、 errnoEILSEQ を 設 定 す る 。 こ の 場 合 は *ps へ の 影 響 は 未 定 義 で あ る 。

s が NULL で な く pwc が NULL の 場 合 は mbrtowc() 関 数 は 上 記 と 同 様 に 動 作 す る が 、 変 換 し た ワ イ ド 文 字 は メ モ リ ー に は 書 き 込 ま れ な い 。

puts *ps in the initial state and returns 0. 三 番 目 の 場 合 と し て s が NULL の 場 合 、 pwcn は 無 視 さ れ る 。 *ps が 表 現 す る 変 換 状 態 が 不 完 全 な マ ル チ バ イ ト 文 字 変 換 を 示 し て い る 場 合 は 、 mbrtowc() 関 数 は (size_t) −1 を 返 し 、 errnoEILSEQ を セ ッ ト し 、 *ps は 未 定 義 状 態 の ま ま に す る 。 さ も な け れ ば 、 mbrtowc() 関 数 は *ps を 初 期 状 態 に し て 0 を 返 す 。 上 記 の 全 て の 場 合 に お い て 、 ps が NULL な ら ば 代 わ り に mbrtowc() 関 数 の み が 使 用 す る 静 的 で 名 前 の な い 状 態 が 使 用 さ れ る 。 さ も な け れ ば 、 *ps は 有 効 な mbstate_t オ ブ ジ ェ ク ト で な け れ ば な ら な い 。 mbstate_t オ ブ ジ ェ ク ト で あ る a は ゼ ロ で 埋 め る こ と に よ っ て 初 期 状 態 に 初 期 化 で き る 。 以 下 に 例 を 示 す 。

memset(&a, 0, sizeof(a));

返 り 値

L'\0' 以 外 の ワ イ ド 文 字 を 認 識 し た 場 合 に は mbrtowc() 関 数 は s か ら 始 ま る マ ル チ バ イ ト 列 か ら 解 析 し た バ イ ト 数 を 返 す 。 L'\0' ワ イ ド 文 字 を 認 識 し た 場 合 に は 0 を 返 す 。 不 正 な マ ル チ バ イ ト 列 に 遭 遇 し た 場 合 に は (size_t) −1 を 返 し 、 errnoEILSEQ を 設 定 す る 。 完 全 な マ ル チ バ イ ト 文 字 を 解 析 で き な か っ た 場 合 に は (size_t) −2 を 返 し n を 増 加 さ せ る 必 要 が あ る こ と を 示 す 。

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )

mbrtowc() 関 数 は 、 例 外 付 き の ス レ ッ ド セ ー フ で あ る 。 ps パ ラ メ ー タ ー が NULL で 呼 び 出 さ れ た 場 合 は ス レ ッ ド セ ー フ で は な い 。

準 拠

C99.

注 意

mbrtowc() の 動 作 は 現 在 の ロ ケ ー ル の LC_CTYPE カ テ ゴ リ ー に 依 存 し て い る 。

関 連 項 目

mbsinit(3), mbsrtowcs(3)

こ の 文 書 に つ い て

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