1 .\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
3 .\" This is free documentation; you can redistribute it and/or
4 .\" modify it under the terms of the GNU General Public License as
5 .\" published by the Free Software Foundation; either version 2 of
6 .\" the License, or (at your option) any later version.
8 .\" References consulted:
9 .\" GNU glibc-2 source code and manual
10 .\" Dinkumware C library reference http://www.dinkumware.com/
11 .\" OpenGroup's Single UNIX specification http://www.UNIX-systems.org/online.html
14 .\" Japanese Version Copyright (c) 1999 HANATAKA Shinya
15 .\" all rights reserved.
16 .\" Translated Tue Jan 11 00:56:13 JST 2000
17 .\" by HANATAKA Shinya <hanataka@abyss.rim.or.jp>
19 .\"WORD: initial shift state 初期シフト状態
21 .TH MBSINIT 3 2000-11-20 "GNU" "Linux Programmer's Manual"
23 mbsinit \- 初期シフト状態かどうかを検査する
28 .BI "int mbsinit(const mbstate_t *" ps );
31 文字をマルチバイト表現とワイド文字表現の間で変換する場合には
32 \fImbstate_t\fP 型の変換状態を使用する。文字列の変換は有限状態マシン
33 を使用する。いくらかの文字の変換を完了した後に、残りの文字を処理する
34 ために状態を保存しておく必要があるかもしれない。このような変換状態は
35 ISO-2022 や UTF-7 のような符号を扱うのに必要とされる。
37 初期状態とは文字列の変換を開始する時の状態である。状態には二種類が
44 ワイド文字をマルチバイトに変換する関数で使用される。しかし両方とも
45 \fImbstate_t\fP に格納され、初期状態として同じ表現を持つ。
47 8ビット符号においては全ての状態は初期状態と等価である。
48 UTF-8, EUC-*, BIG5, SJIS のような多バイト符号においてワイド文字から
49 多バイト文字への変換関数は非初期状態にはならない。
52 のような多バイト文字からワイド文字への変換関数では
53 文字の解釈の途中で非初期状態となる場合がある。
57 を作成する方法の一つは、それをゼロに設定することである:
61 memset(&state,0,sizeof(mbstate_t));
64 Linux においては以下の方法でも同様であるが、コンパイラーの警告が
68 mbstate_t state = { 0 };
72 は \fI*ps\fP が初期状態に一致するかどうかを検査する。
75 は \fI*ps\fP が初期状態の場合や NULL ポインターの場合には
76 ゼロ以外を返す。それ以外の場合にはゼロを返す。