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

書式

#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 カテゴリに依存している。

この文書について

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