WCSRTOMBS
Section: Linux Programmer's Manual (3)
Updated: 1999-07-25
Index
JM Home Page
roff page
名前
wcsrtombs - ワイド文字文字列をマルチバイト文字列に変換する
書式
#include <wchar.h>
size_t wcsrtombs(char *dest, const wchar_t **src,
size_t len, mbstate_t *ps);
説明
dest が NULL ポインタでなければ、
wcsrtombs()
関数は
ワイド文字文字列 *src を dest が指すマルチバイト文字列
に変換する。最大 len バイトまでが dest に書き込まれる。
シフト状態 *ps は更新される。実際の効果としては、この変換は以下
の動作と同じになる:
wcrtomb(dest, *src, ps)
を呼び、成功が返ったら、
dest を書き込んだバイト数だけ増やし、*src を 1 増やす。
そして、wcrtomb が成功を返す限りこれを繰り返す。
変換が止まる理由は 3 つ考えられる:
(現在のロケールに基づいて)マルチバイト列で表現できないワイド文字に
出会った場合。この場合は、*src は不正なワイド文字を指した状態になり、
(size_t)(-1)
が返され、
errno
に EILSEQ が設定される。
2. 長さの制限により変換が止められた場合。この場合には、*src は次に
変換されるべきワイド文字列を指した状態になり、dest に書き込まれ
たバイト数が返される。
3. ワイド文字列が終端の L'\0' (これには *ps を初期状態に戻すと
いう副作用がある)も含めて全て変換された場合。この場合には *src
に NULL が設定され、dest に書き込まれたバイト数が返される
(終端の '\0' は数えない)。
dest が NULL ならば len は無視されて前述のように変換が行わ
れるが、変換されたバイトデータはメモリに書き出されない点と、出力先の長
さの制限がない点が異なる。
上記のいずれの場合も、ps が NULL ポインタならば、wcsnrtombs 関数
だけが知っている静的な匿名の状態がシフト状態の代わりに用いられる。
プログラマは少なくとも len バイトの領域を dest に確保しな
ければならない。
返り値
wcsrtombs()
は、変換して得られたマルチバイト列のバイト数を返す。
これには終端の null バイトは含まれない。
変換できないワイド文字に出会った場合には
(size_t)(-1)
が返され、
errno
に EILSEQ が設定される。
準拠
C99.
wcsrtombs()
の動作は現在のロケールの
LC_CTYPE
カテゴリに依存する。
ps に NULL を渡した際の動作はマルチスレッドセーフでない。
関連項目
iconv(3),
wcsnrtombs(3),
wcstombs(3)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 準拠
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:12 GMT, November 19, 2007