.\" Copyright (c) Bruno Haible .\" .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" References consulted: .\" GNU glibc-2 source code and manual .\" Dinkumware C library reference http://www.dinkumware.com/ .\" OpenGroup's Single UNIX specification .\" http://www.UNIX-systems.org/online.html .\" ISO/IEC 9899:1999 .\" .\" Japanese Version Copyright (c) 1999 HANATAKA Shinya .\" all rights reserved. .\" Translated Tue Jan 11 00:56:16 JST 2000 .\" by HANATAKA Shinya .\" Updated Thu Dec 13 JST 2001 by Kentaro Shirakata .\" .TH MBRTOWC 3 2001-11-22 "GNU" "Linux Programmer's Manual" .SH 名前 mbrtowc \- マルチバイト列をワイド文字に変換する .SH 書式 .nf .B #include .sp .BI "size_t mbrtowc(wchar_t *" pwc ", const char *" s ", size_t " n \ ", mbstate_t *" ps ); .fi .SH 説明 この関数が用いられる場合、通常 \fIs\fP が NULL でなく \fIpwc\fP も NULL で ない。この場合は、 .BR mbrtowc () 関数は \fIs\fP から始まる最大 \fIn\fP バイトの マルチバイト文字を検査して、次の完全なマルチバイト文字列を取り出し、 それをワイド文字に変換して \fI*pwc\fP に格納する。 同時にシフト状態 \fI*ps\fP を更新する。変換したワイド文字が L\(aq\\0\(aq で なければ、\fIs\fP から消費するバイト数を返す。 変換したワイド文字が L\(aq\\0\(aq の場合にはシフト状態 \fI*ps\fP を 初期状態に戻して 0 を返す。 .PP \fIs\fP から始まる \fIn\fP バイトが完全なマルチバイト文字を含んでいない 場合には、 .BR mbrtowc () は \fI(size_t)\ \-2\fP を返す。 マルチバイト文字列に冗長なシフトシーケンスが含まれていると、 \fIn\fP >= \fIMB_CUR_MAX\fP の時にもこのようなことが起こりえる。 .PP \fIs\fP から始まるマルチバイト文字列が、次の完全な文字の前に 不正なマルチバイト列を含んでいる場合には、 .BR mbrtowc () は \fI(size_t)\ \-1\fP を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。 この場合は \fI*ps\fP への影響は未定義である。 .PP \fIs\fP が NULL でなく \fIpwc\fP が NULL の場合は .BR mbrtowc () 関数は 上記と同様に動作するが、変換したワイド文字はメモリには書き込まれない。 .PP puts \fI*ps\fP in the initial state and returns 0. 三番目の場合として \fIs\fP が NULL の場合、 \fIpwc\fP と \fIn\fP は 無視される。 \fI*ps\fP が表現する変換状態が不完全なマルチバイト文字変換を示している場合は、 .BR mbrtowc () 関数は \fI(size_t)\ \-1\fP を返し、 \fIerrno\fP に \fBEILSEQ\fP をセットし、 \fI*ps\fP は未定義状態のままにする。 さもなければ、 .BR mbrtowc () 関数は \fI*ps\fP を初期状態にして 0 を返す。 .PP 上記の全ての場合において、\fIps\fP が NULL ポインターならば代わりに mbrtowc 関数のみが使用する静的で名前のない状態が使用される。 さもなければ、\fI*ps\fP は有効な \fImbstate_t\fP オブジェクトで なければならない。 \fImbstate_t\fP オブジェクトである \fIa\fP はゼロで埋めることによって 初期状態に初期化できる。以下に例を示す。 .sp .in +4n memset(&a, 0, sizeof(a)); .in .SH 返り値 L\(aq\\0\(aq 以外のワイド文字を認識した場合には .BR mbrtowc () 関数は \fIs\fP から始まるマルチバイト列から解析したバイト数を返す。 L\(aq\\0\(aq ワイド文字を認識した場合には 0 を返す。 不正なマルチバイト列に遭遇した場合には .I (size_t)\ \-1 を返し、 \fIerrno\fP に \fBEILSEQ\fP を設定する。完全なマルチバイト文字を 解析できなかった場合には .I (size_t)\ \-2 を返し \fIn\fP を増加させる必要があることを示す。 .SH 準拠 C99. .SH 注意 .BR mbrtowc () の動作は現在のロケールの .B LC_CTYPE カテゴリに依存している。 .SH 関連項目 .BR mbsrtowcs (3)