Manpages

名 前

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

書 式

#include <wchar.h>

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

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

mbsnrtowcs():

glibc 2.10 以 降 :

_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L

glibc 2.10 よ り 前 :

_GNU_SOURCE

説 明

mbsnrtowcs() 関 数 は mbsrtowcs(3) 関 数 に 似 て い る が 変 換 す る バ イ ト 数 が *src か ら 始 ま る nms バ イ ト に 制 限 さ れ て い る 点 が 異 な っ て い る 。

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

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

*src は 不 正 な マ ル チ バ

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

2.

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

3.

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

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

返 り 値

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

準 拠

POSIX.1−2008.

注 意

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

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

関 連 項 目

iconv(3), mbrtowc(3) mbsinit(3), mbsrtowcs(3)

こ の 文 書 に つ い て

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