ワイド文字を対応するマルチバイト文字に変換します。 _wctomb_l。
構文
errno_t wctomb_s(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar
);
errno_t _wctomb_s_l(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar,
_locale_t locale
);
パラメーター
pRetValue
バイト数、または結果を示すコード。
mbchar
マルチバイト文字のアドレス。
sizeInBytes
バッファー mbchar のサイズ。
wchar
変換するワイド文字。
locale
使用するロケール。
戻り値
正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。
エラー条件
mbchar |
sizeInBytes |
戻り値 | pRetValue |
|---|---|---|---|
NULL |
>0 | EINVAL |
変更されない |
| 任意 | >INT_MAX |
EINVAL |
変更されない |
| 任意 | 小さすぎる | EINVAL |
変更されない |
上記のいずれかのエラー状態が発生した場合は、「パラメーターの検証 で説明されているように、無効なパラメーター ハンドラーが呼び出。 実行の継続が許可された場合、wctomb は EINVAL を返し、errno を EINVAL に設定します。
戻り値 EILSEQ は、パラメーター wchar を介して渡された値が有効なワイド文字ではないことを示します。
解説
wctomb_s 関数はその wchar 引数を対応するマルチバイト文字に変換し、結果を mbchar に格納します。 任意のプログラムの任意のポイントからこの関数を呼び出すことができます。
wctomb_s がワイド文字をマルチバイト文字に変換する場合、ワイド文字のバイト数 (常に MB_CUR_MAX 以内) を pRetValue によって示される整数に与えます。 wchar がワイド文字の null 文字 (L'\0') である場合、wctomb_s は 1 で pRetValue を塗りつぶします。 ターゲット ポインター mbchar が NULLされている場合、 wctomb_s は 0 を pRetValueに配置します。 現在のロケールで変換できない場合、 wctomb_s は -1 を pRetValue に配置します。
wctomb_s は、ロケールに依存する情報に現在のロケールを使用します。_wctomb_s_l は、渡されたロケールを代わりに使用することを除いて同じです。 詳細については、「 Locale」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
| ルーチンによって返される値 | 必須ヘッダー |
|---|---|
wctomb_s |
<stdlib.h> |
_wctomb_s_l |
<stdlib.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
このプログラムは、wctomb_s 関数の動作を示しています。
// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i;
wchar_t wc = L'a';
char *pmb = (char *)malloc( MB_CUR_MAX );
printf_s( "Convert a wide character:\n" );
wctomb_s( &i, pmb, MB_CUR_MAX, wc );
printf_s( " Characters converted: %u\n", i );
printf_s( " 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