Manpages

名 前

mbsinit − 初 期 シ フ ト 状 態 か ど う か を 検 査 す る

書 式

#include <wchar.h>

int mbsinit(const mbstate_t *ps);

説 明

文 字 を マ ル チ バ イ ト 表 現 と ワ イ ド 文 字 表 現 の 間 で 変 換 す る 場 合 に は mbstate_t 型 の 変 換 状 態 を 使 用 す る 。 文 字 列 の 変 換 は 有 限 状 態 マ シ ン を 使 用 す る 。 い く ら か の 文 字 の 変 換 を 完 了 し た 後 に 、 残 り の 文 字 を 処 理 す る た め に 状 態 を 保 存 し て お く 必 要 が あ る か も し れ な い 。 こ の よ う な 変 換 状 態 は ISO−2022 や UTF−7 の よ う な 符 号 を 扱 う の に 必 要 と さ れ る 。 初 期 状 態 と は 文 字 列 の 変 換 を 開 始 す る 時 の 状 態 で あ る 。 状 態 に は 二 種 類 が 存 在 し 、 一 つ は mbsrtowcs(3) の よ う な マ ル チ バ イ ト を ワ イ ド 文 字 に 変 換 す る 関 数 で 使 用 さ れ る 。 も う 一 つ は wcsrtombs(3) の よ う な ワ イ ド 文 字 を マ ル チ バ イ ト に 変 換 す る 関 数 で 使 用 さ れ る 。 し か し 両 方 と も mbstate_t に 格 納 さ れ 、 初 期 状 態 と し て 同 じ 表 現 を 持 つ 。

8ビ ッ ト 符 号 に お い て は 全 て の 状 態 は 初 期 状 態 と 等 価 で あ る 。 UTF−8, EUC−*, BIG5, SJIS の よ う な 多 バ イ ト 符 号 に お い て ワ イ ド 文 字 か ら 多 バ イ ト 文 字 へ の 変 換 関 数 は 非 初 期 状 態 に は な ら な い 。 し か し mbrtowc(3) の よ う な 多 バ イ ト 文 字 か ら ワ イ ド 文 字 へ の 変 換 関 数 で は 文 字 の 解 釈 の 途 中 で 非 初 期 状 態 と な る 場 合 が あ る 。 初 期 状 態 の mbstate_t を 作 成 す る 方 法 の 一 つ は 、 そ れ を ゼ ロ に 設 定 す る こ と で あ る :

mbstate_t state;
memset(&state,0,sizeof(mbstate_t));

Linux に お い て は 以 下 の 方 法 で も 同 様 で あ る が 、 コ ン パ イ ラ ー の 警 告 が 生 成 さ れ る か も し れ な い 。

mbstate_t state = { 0 };

mbsinit() は *ps が 初 期 状 態 に 一 致 す る か ど う か を 検 査 す る 。

返 り 値

mbsinit() は *ps が 初 期 状 態 の 場 合 や NULL の 場 合 に は ゼ ロ 以 外 を 返 す 。 そ れ 以 外 の 場 合 に は ゼ ロ を 返 す 。

属 性

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

準 拠

C99.

注 意

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

関 連 項 目

mbrlen(3), mbrtowc(3), wcrtomb(3), mbsrtowcs(3), wcsrtombs(3)

こ の 文 書 に つ い て

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