.\" Copyright (c) Bruno Haible .\" .\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA) .\" 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. .\" %%%LICENSE_END .\" .\" 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 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1999 HANATAKA Shinya .\" all rights reserved. .\" Translated Tue Jan 11 00:56:10 JST 2000 .\" by HANATAKA Shinya .\" .TH MBSNRTOWCS 3 2020\-06\-09 GNU "Linux Programmer's Manual" .SH 名前 mbsnrtowcs \- マルチバイト文字列をワイド文字列に変換する .SH 書式 .nf \fB#include \fP .PP \fBsize_t mbsnrtowcs(wchar_t *\fP\fIdest\fP\fB, const char **\fP\fIsrc\fP\fB,\fP \fB size_t \fP\fInms\fP\fB, size_t \fP\fIlen\fP\fB, mbstate_t *\fP\fIps\fP\fB);\fP .fi .PP .RS -4 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照): .RE .PP \fBmbsnrtowcs\fP(): .PD 0 .ad l .RS 4 .TP 4 glibc 2.10 以降: _POSIX_C_SOURCE\ >=\ 200809L .TP glibc 2.10 より前: _GNU_SOURCE .RE .ad .PD .SH 説明 \fBmbsnrtowcs\fP() 関数は \fBmbsrtowcs\fP(3) 関数に似ているが、変換するバイト数が \fI*src\fP から始まる最大 \fInms\fP バイトに制限されている点が異なっている。 .PP \fIdest\fP が NULL でなければ \fBmbsnrtowcs\fP() 関数は \fI*src\fP からのマルチバイト文字列の最大 \fInms\fP までを \fIdest\fP からのワイド文字列に変換する。 最大 \fIlen\fP 文字のワイド文字が \fIdest\fP に書き込まれる。 同時にシフト状態 \fI*ps\fP を更新する。 変換は \fImbrtowc(dest, *src, n, ps)\fP を、この呼び出しが成功する限り、繰り返し実行したのと実質的に同様である。 ここでの \fIn\fP は正の数であり、繰り返しごとに \fIdest\fP が 1 増加させられ、 \fI*src\fP が消費したバイト数だけ増加させられる。変換は以下の三つの いずれかの条件で停止する: .IP 1. 3 不正なマルチバイト列に遭遇した。この場合には \fI*src\fP は不正な マルチバイト列を指すようにして、 \fI(size_t)\ \-1\fP を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。 .IP 2. \fInms\fP 制限によって強制的に停止するか、\fIlen\fP 文字の L\(aq\e0\(aq 以外の ワイド文字を \fIdest\fP に格納した場合。この場合は \fI*src\fP は 次に変換されるマルチバイト列を指すようにして、\fIdest\fP に書き込まれた ワイド文字の数を返す。 .IP 3. マルチバイト文字列が終端のヌルワイド文字 (\(aq\e0\(aq) まで含めて完全に変換された場合。 (この時、副作用として \fI*ps\fP が初期状態に戻される。) この場合は \fI*src\fP には NULL が設定され、 \fIdest\fP に書き込まれた文字数 (終端の ヌルワイド文字は含まれない) を返す。 .PP 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. .PP \fIdest\fP が NULL の場合、\fIlen\fP は無視され、上記と同様の変換が 行われるが、変換されたワイド文字はメモリーに書き込まれず、変換先の上限 が存在しない。 .PP 上記のどちらの場合でも、\fIps\fP が NULL ならば、 代りに \fBmbsnrtowcs\fP() 関数のみが使用する静的で名前のない状態が使用される。 .PP プログラマーは \fIdest\fP に最低でも \fIlen\fP ワイド文字を書き込むこ とができる空間があることを保証しなければならない。 .SH 返り値 \fBmbsnrtowcs\fP() 関数はワイド文字列に変換完了したワイド文字の数を返す。 終端のナルワイド文字は含まない。不正なマルチバイト列に遭遇した場合には \fI(size_t)\ \-1\fP を返し、\fIerrno\fP に \fBEILSEQ\fP を設定する。 .SH 属性 この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 .TS allbox; lb lb lbw29 l l l. インターフェース 属性 値 T{ \fBmbsnrtowcs\fP() T} Thread safety MT\-Unsafe race:mbsnrtowcs/!ps .TE .sp 1 .SH 準拠 POSIX.1\-2008. .SH 注意 \fBmbsnrtowcs\fP() の動作は現在のロケールの \fBLC_CTYPE\fP カテゴリーに依存している。 .PP \fIps\fP に NULL を渡した際の動作はマルチスレッドセーフでない。 .SH 関連項目 \fBiconv\fP(3), \fBmbrtowc\fP(3), \fBmbsinit\fP(3), \fBmbsrtowcs\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。