MBLEN(3) — NEWS-OS Programmer’s Manual
名称
mblen, mbtowc, wctomb, mbstowcs, wcstombs − 多バイト文字処理
形式
#include <stdlib.h>
int mblen (s, n)
char ∗s;
int n;
int mbtowc(pwc, s, n)
wchar_t ∗pwc;
char ∗s;
int n;
int wctomb(s, wc)
char ∗s;
wchar_t wc;
int mbstowcs(ws, s, n)
wchar_t ∗ws;
char ∗s;
int n;
int wcstombs(s, ws, n)
char ∗s;
wchar_t ∗ws;
int n;
解説
多バイト文字処理関数の動作は、現在のロケールの LC_CTYPE カテゴリによって変化します。 s が NULL ポインタのとき、これらの関数は 0 を返します。
s が NULL ポインタでないとき、これらの関数は次のように動作します。
mblen s で指される多バイト文字を構成するバイト数を決定します。
s がナル文字を指していると、 mblen は 0 を返します。 次の n バイト、またはそれより少ないバイト列が正しい多バイト文字であれば、 その多バイト文字を構成するバイト数を返します。 正しい多バイト文字を構成していなければ、−1 を返します。 mblen が返す値が、 n や MB_CUR_MAX マクロの値より大きいことはありません。
mbtowc s で指される多バイト文字を構成するバイト数を決定します。 それから、その多バイト文字に対応する ワイド文字を決定します。 pwc が NULL ポインタでなければ、 mbtowc はワイド文字を pwc が指すところに格納します。
mbtowc が返す値は、 mblen が返す値とまったく同じです。
wctomb ワイド文字に対応する多バイト文字に必要なバイト数を決定します。 s が指す配列に多バイト文字を格納します。 最大限 MB_CUR_MAX 文字まで格納されます。
wc の値が正しい多バイト文字に対応していなかったら、 wctomb は −1 を返します。 そうでなければ、 wc の値に対応する、多バイト文字を構成するバイト数を返します。 この値が、 MB_CUR_MAX マクロの値より大きいことはありません。
mbstowcs s で指される配列の多バイト文字列を対応するワイド文字列に変換し、 n 個以下のワイド文字を、 ws で指される配列に格納します。 ナル文字は値が 0 のコードに変換され、 それに続く多バイト文字列は参照されません。 各多バイト文字ごとに、 mbtowc を呼び出したように変換されます。 ws で指される配列のうち、 n 個より多くは変更されません。 オーバラップする対象間でコピーが行われると、動作は不定です。
正しくない多バイト文字にぶつかると、 mbstowcs は −1 を返します。 そうでなければ、変更された配列の 要素数(終端の 0 はあっても数えない)を返します。
wcstombs ws で指されたワイド文字列を対応する多バイト文字列に変換し、 s で指された配列に格納します。 多バイト文字が n の制限を超えるか、またはナル文字が格納されるところまでです。 各ワイド文字ごとに、 wctomb が呼び出したように変換されます。 s で指された配列のうち、 n 個より多くは変更されません。 オーバラップする対象間でコピーが行われると、動作は不定です。
正しい多バイト文字に対応していないワイド文字にぶつかると、 wcstombs は −1 を返します。 そうでなければ、 変更されたバイト数 (終端のナル文字はあっても数えない) を返します。
関連事項
NEWS-OSRelease 4.2.1R