wctomb
, _wctomb_l
ワイド文字を対応するマルチバイト文字に変換します。 これらの関数のセキュリティを強化したバージョンを使用できます。「wctomb_s
、_wctomb_s_l
」を参照してください。
構文
int wctomb(
char *mbchar,
wchar_t wchar
);
int _wctomb_l(
char *mbchar,
wchar_t wchar,
_locale_t locale
);
パラメーター
mbchar
マルチバイト文字のアドレス。
wchar
ワイド文字。
戻り値
wctomb
がワイド文字をマルチバイト文字に変換する場合、ワイド文字のバイト数 (常に MB_CUR_MAX
以内) を返します。 wchar
がワイド文字の null 文字 (L'\0') の場合、wctomb
1 を返します。 ターゲット ポインター mbchar
が NULL
の場合、 wctomb
は 0 を返します。 現在のロケールで変換できない場合、 wctomb
は -1 を返し、 errno
は EILSEQ
に設定されます。
解説
wctomb
関数はその wchar
引数を対応するマルチバイト文字に変換し、結果を mbchar
に格納します。 任意のプログラムの任意のポイントからこの関数を呼び出すことができます。 wctomb
は、ロケールに依存するあらゆる動作に現在のロケールを使用します。_wctomb_l
は、渡されたロケールを代わりに使用することを除いて wctomb
と同じです。 詳細については、「 Locale」を参照してください。
wctomb
はそのパラメーターを検証します。 mbchar
が NULL
の場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、 errno
が EINVAL
に設定され、関数から -1 が返されます。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
wctomb |
<stdlib.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
このプログラムは、wctomb 関数の動作を示しています。
// crt_wctomb.cpp
// compile with: /W3
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i;
wchar_t wc = L'a';
char *pmb = (char *)malloc( MB_CUR_MAX );
printf( "Convert a wide character:\n" );
i = wctomb( pmb, wc ); // C4996
// Note: wctomb is deprecated; consider using wctomb_s
printf( " Characters converted: %u\n", i );
printf( " Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
Characters converted: 1
Multibyte character: a
関連項目
データ変換
ロケール
_mbclen
、 mblen
、 _mblen_l
mbstowcs
, _mbstowcs_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
WideCharToMultiByte