Manpages

名 前

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

書 式

#include <wchar.h>

size_t mbsrtowcs(wchar_t *dest, const char **src,
size_t
len, mbstate_t *ps);

説 明

dest が NULL で な け れ ば 、 mbsrtowcs() 関 数 は マ ル チ バ イ ト 文 字 列 *srcdest か ら 始 ま る ワ イ ド 文 字 列 に 変 換 す る 。 dest に は 最 大 で len 文 字 の ワ イ ド 文 字 が 書 き 込 ま れ る 。 同 時 に シ フ ト 状 態 *ps を 更 新 す る 。 変 換 は mbrtowc(dest, *src, n, ps) を 、 こ の 呼 び 出 し が 成 功 す る 限 り 繰 り 返 し 実 行 し た の と 実 質 的 に 同 様 で あ る 。 こ こ で n は 正 の 数 で あ り 、 繰 り 返 し ご と に dest が 1 増 加 さ せ ら れ 、 *src が 消 費 し た バ イ ト 数 だ け 増 加 さ せ ら れ る 。 変 換 は 以 下 の 三 つ の い ず れ か の 条 件 で 停 止 す る :

1. 不 正 な マ ル チ バ イ ト 列 に 遭 遇 し た 。 こ の 場 合 に は

*src は 不 正 な マ ル チ バ

イ ト 列 を 指 す よ う に し て 、 (size_t) −1 を 返 し 、 errnoEILSEQ を 設 定 す る 。

2.

len 文 字 の L'\0' 以 外 の ワ イ ド 文 字 を dest に 格 納 し た 場 合 。 こ の 場 合 は *src は 次 に 変 換 さ れ る マ ル チ バ イ ト 列 を 指 す よ う に し て 、 dest に 書 き 込 ま れ た ワ イ ド 文 字 の 数 を 返 す 。

3.

マ ル チ バ イ ト 文 字 列 が 終 端 の ヌ ル ワ イ ド 文 字 ('\0') ま で 含 め て 完 全 に 変 換 さ れ た 場 合 。 こ の 時 、 副 作 用 と し て *ps が 初 期 状 態 に 戻 さ れ る 。 こ の 場 合 は *src に は NULL が 設 定 さ れ 、 終 端 の ヌ ル ワ イ ド 文 字 を 除 い て dest に 書 き 込 ま れ た 文 字 数 を 返 す 。

dest が NULL の 場 合 、 len は 無 視 さ れ 、 上 記 と 同 様 の 変 換 が 行 わ れ る が 、 変 換 さ れ た ワ イ ド 文 字 は メ モ リ ー に 書 き 込 ま れ ず 、 変 換 先 の 上 限 が 存 在 し な い 。 上 記 の ど ち ら の 場 合 で も 、 ps が NULL な ら ば 、 代 り に mbsrtowcs() 関 数 の み が 使 用 す る 静 的 で 名 前 の な い 状 態 が 使 用 さ れ る 。 プ ロ グ ラ マ ー は dest に 最 低 で も len ワ イ ド 文 字 を 書 き 込 む こ と が で き る 空 間 が あ る こ と を 保 証 し な け れ ば な ら な い 。

返 り 値

mbsrtowcs() 関 数 は ワ イ ド 文 字 列 に 変 換 完 了 し た ワ イ ド 文 字 の 数 を 返 す 。 終 端 の ナ ル ワ イ ド 文 字 は 含 ま な い 。 不 正 な マ ル チ バ イ ト 列 に 遭 遇 し た 場 合 に は (size_t) −1 を 返 し 、 errnoEILSEQ を 設 定 す る 。

準 拠

C99.

注 意

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

ps に NULL を 渡 し た 際 の 動 作 は マ ル チ ス レ ッ ド セ ー フ で な い 。

関 連 項 目

iconv(3), mbrtowc(3), mbsinit(3), mbsnrtowcs(3), mbstowcs(3)

こ の 文 書 に つ い て

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