MBRTOWC(3) | FreeBSD Library Functions Manual | MBRTOWC(3) |
名称
mbrtowc, mbrtoc16, mbrtoc32 — 1 文字を 1 ワイド文字コードに変換する (再開可能)ライブラリ
Standard C Library (libc, -lc)書式
#include < wchar.h> size_t
mbrtowc( wchar_t * restrict pc, const char * restrict s, size_t n, mbstate_t * restrict ps);
#include < uchar.h>
size_t
mbrtoc16( char16_t * restrict pc, const char * restrict s, size_t n, mbstate_t * restrict ps);
size_t
mbrtoc32( char32_t * restrict pc, const char * restrict s, size_t n, mbstate_t * restrict ps);
解説
mbrtowc(), mbrtoc16() と mbrtoc32() 関数は、次のマルチバイト文字を完了する必要なバイトの数を決定するために s によって指された多くても n バイトを検査します。文字が完了することができて、 pc が NULL でないなら、 s によって表されるワイド文字は、それがが指す wchar_t, char16_t または char32_t に格納されます。s が NULL であるなら、これらの関数は、まるで pc が NULL であり、 s が空の文字列 (“”) であり、 n が 1 であったかのように振る舞います。
mbstate_t の引数 ps は、シフト状態の経過を追うために使用されます。それが NULL であるなら、これらの関数は、プログラムの開始時に初期の変換状態に初期化される、静的な mbstate_t オブジェクトを内部的に使用します。
単一の char16_t が、特定のマルチバイト文字を表わすために十分に大きくないように、 mbrtoc16() 関数は、単一のマルチバイト文字シーケンスを変換するために複数回呼び出される必要があるかもしれません。
戻り値
mbrtowc(), mbrtoc16() と mbrtoc32() 関数は、次を返します:- 0
-
次の
n バイトか、または小数のバイトは、ヌルのワイド文字 (
L'\0'
) を表します。 - >0
- 次の n バイトか、または小数のバイトは、有効な文字を表し、これらの関数は、マルチバイト文字を完了するために使用されるバイト数を返します、
- ( size_t)-1
- エンコード (コード化) エラーが発生しました。次の n バイトか、または小数のバイトは、有効なマルチバイト文字となっていません。
- ( size_t)-2
- 次の n が与えられますが、完了していません、有効なマルチバイト文字シーケンスとすべての n バイトが処理されます。
また、 mbrtoc16() 関数は、次を返します:
- ( size_t)-3
- 前の呼び出しに由来する次の文字が、格納されました。入力のバイトは、消費されていません。
エラー
mbrtowc(), mbrtoc16() と mbrtoc32() 関数は、次の場合に失敗します:- [ EILSEQ]
- 無効のマルチバイトシーケンスが検出されました。
- [ EINVAL]
- 変換状態は、無効です。
規格
mbrtowc(), mbrtoc16() と mbrtoc32() 関数は、 ISO/IEC 9899:2011 (“ISO C11”) に適合しています。May 21, 2013 | FreeBSD |