名 前
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/ に 書 か れ て い る 。