次の方法で共有


mbsrtowcs

対応するワイド文字列にマルチバイト文字列をに変換します。この関数のセキュリティが強化されたバージョンについては、「mbsrtowcs」を参照してください。

size_t mbsrtowcs(
   wchar_t *wcstr,
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
   wchar_t (&wcstr)[size],
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
); // C++ only

パラメーター

  • [出力] wcstr
    変換結果のワイド文字列のアドレスの位置。

  • [入力] mbstr
    変換するマルチバイト文字列の位置に間接的に参照します。

  • [入力] count
    変換される文字数。

  • [入力] mbstate
    mbstate_t 変換状態のオブジェクトへのポインター。

戻り値

エラーが発生した場合は正常に変換する Word無効語 (存在する場合)それよりを終了する null を含む数を返します。

解説

mbsrtowcs の関数は wcstr のアドレスに mbstr の値の間接が指す先の mbstate に含まれている指定された変換状態で始まるマルチバイト文字の文字列をに変換します。変換の各文字にするまで続行されます : とマルチバイト文字を終了する null 値が見つかり非準拠する文字があるか次の文字が count に含まれる制限を超えている場合。mbsrtowcs がマルチバイトの null 文字 (「 \ 0 ") が発生する前に count が発生したときまたは文字と停止を終了する 16 ビットの null 値に変換する。

したがってwcstr ワイド文字列は mbsrtowcs が変換中のマルチバイトの null 文字を検出したときにのみ null 終了します。mbstr と wcstr が指す文字列が重なり合う場合、mbsrtowcs 関数の動作は未定義です。mbsrtowcs現在のロケールの LC_TYPE カテゴリ別に影響されます。

mbsrtowcs の関数は restartability によって mbstowcs、_mbstowcs_l とは異なります。変換は同じ状態またはそのほかの restartable 関数への後続の呼び出しの mbstate に格納されます。結果は restartable と nonrestartable 関数の使用を使用すると未定義です。たとえばアプリケーションが mbsrtowcs に mbslen ではなく mbstowcs. の代わりに使用されている場合後続の呼び出し mbsrlen を使用します。

wcstr の引数が NULL 場合mbsrtombs は対象の文字列の中の単語の必要なサイズを返します。mbstate が null の場合変換 mbstate_t の内部状態が使用されます。文字のシーケンス wchar に対応するマルチバイト文字表現が見つからなかった場合はを返しerrno は EILSEQ に設定されます。

mbstr が NULL の場合は、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。実行の継続が許可された場合、この関数は errno を EINVAL に設定し、-1 を返します。

C++ ではこの関数によって新しい関数を呼び出しますテンプレート オーバーロードがありさらに安全この関数の対応があります。詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。

例外

mbsrtowcs の関数はこの関数の実行中にmbstate が null でない現在のスレッドの関数が setlocale を呼び出さない限りマルチスレッド セーフです。

同等の .NET Framework 関数

該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

必要条件

ルーチン

必須ヘッダー

mbsrtowcs

<wchar.h>

参照

関連項目

データ変換

ロケール

マルチバイト文字のシーケンスの解釈

mbrtowc

mbtowc、_mbtowc_l

mbstowcs、_mbstowcs_l

mbsinit