Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       mbsnrtowcs - マルチバイト文字列をワイド文字列に変換する

書式

       #include <wchar.h>

       size_t mbsnrtowcs(wchar_t *dest, const char **src,
                         size_t nms, size_t len, mbstate_t *ps);

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       mbsnrtowcs():
           glibc 2.10 以降:
               _POSIX_C_SOURCE >= 200809L
           glibc 2.10 より前:
               _GNU_SOURCE

説明

       mbsnrtowcs()  関数は mbsrtowcs(3) 関数に似ているが、変換するバイト数が *src から始まる最大
       nms バイトに制限されている点が異なっている。

       dest が NULL でなければ mbsnrtowcs()  関数は *src からのマルチバイト文字列の最大 nms  まで
       を  dest  からのワイド文字列に変換する。 最大 len 文字のワイド文字が dest に書き込まれる。
       同時にシフト状態 *ps を更新する。 変換は mbrtowc(dest, *src, n, ps) を、この呼び出しが成功
       する限り、繰り返し実行したのと実質的に同様である。 ここでの n は正の数であり、繰り返しごと
       に dest が 1 増加させられ、 *src  が消費したバイト数だけ増加させられる。変換は以下の三つの
       いずれかの条件で停止する:

       1. 不正なマルチバイト列に遭遇した。この場合には *src は不正な マルチバイト列を指すようにし
          て、 (size_t) -1 を返し、errnoEILSEQ を設定する。

       2. nms 制限によって強制的に停止するか、len 文字の L'\0' 以外の ワイド文字を dest  に格納し
          た場合。この場合は  *src は 次に変換されるマルチバイト列を指すようにして、dest に書き込
          まれた ワイド文字の数を返す。

       3. マルチバイト文字列が終端のヌルワイド文字 ('\0')  まで含めて完全に変換された場合。 (この
          時、副作用として  *ps  が初期状態に戻される。)   この場合は *src には NULL が設定され、
          dest に書き込まれた文字数 (終端の ヌルワイド文字は含まれない) を返す。

       According to POSIX.1, if the input  buffer  ends  with  an  incomplete  character,  it  is
       unspecified  whether conversion stops at the end of the previous character (if any), or at
       the end of the input buffer.  The glibc implementation adopts the former behavior.

       dest が NULL の場合、len は無視され、上記と同様の変換が 行われるが、変換されたワイド文字は
       メモリーに書き込まれず、変換先の上限 が存在しない。

       上記のどちらの場合でも、ps が NULL ならば、 代りに mbsnrtowcs() 関数のみが使用する静的で名
       前のない状態が使用される。

       プログラマーは dest に最低でも len ワイド文字を書き込むこ とができる空間があることを保証し
       なければならない。

返り値

       mbsnrtowcs()   関数はワイド文字列に変換完了したワイド文字の数を返す。 終端のナルワイド文字
       は含まない。不正なマルチバイト列に遭遇した場合には (size_t) -1 を返し、errnoEILSEQ  を
       設定する。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────┬───────────────┬───────────────────────────────┐
       │インターフェース属性                            │
       ├─────────────────┼───────────────┼───────────────────────────────┤
       │mbsnrtowcs()     │ Thread safety │ MT-Unsafe race:mbsnrtowcs/!ps │
       └─────────────────┴───────────────┴───────────────────────────────┘

準拠

       POSIX.1-2008.

注意

       mbsnrtowcs()  の動作は現在のロケールの LC_CTYPE カテゴリーに依存している。

       ps に NULL を渡した際の動作はマルチスレッドセーフでない。

関連項目

       iconv(3), mbrtowc(3), mbsinit(3), mbsrtowcs(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。