wcrtomb
ワイド文字をマルチバイト文字の表現に変換します。 この関数のセキュリティが強化されたバージョンについては、「wcrtomb_s
」を参照してください。
構文
size_t wcrtomb(
char *mbchar,
wchar_t wchar,
mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
char (&mbchar)[size],
wchar_t wchar,
mbstate_t *mbstate
); // C++ only
パラメーター
mbchar
結果として得られるマルチバイトに変換された文字。
wchar
変換するワイド文字。
mbstate
mbstate_t
オブジェクトへのポインター。
戻り値
変換されたマルチバイト文字を表すのに必要なバイト数を返します。エラーが発生した場合は -1 を返します。
解説
wcrtomb
関数は、mbstate
に含まれる指定された変換の状態で始まるワイド文字を、wchar
に含まれている値から、mbchar
によって表されるアドレスに変換します。 戻り値は対応するマルチバイト文字を表すために必要なバイト数ですが、MB_CUR_MAX
バイトより大きな値を返すことはありません。
mbstate
が null の場合、mbchar
の変換状態を含む内部 mbstate_t
オブジェクトが使用されます。 文字シーケンス wchar
に対応するマルチバイト文字表現がない場合は、-1 が返され、 errno
が EILSEQ
に設定されます。
wcrtomb
関数は、再起動可能性によって_wctomb_l
wctomb
とは異なります。 同じ関数または再開可能な他の関数の後続の呼び出しのために、変換状態が mbstate
に格納されます。 再開可能な関数と再開不可能な関数を混用した場合、結果は未定義です。 たとえば、アプリケーションは wcsrlen
を使用し、wcsnlen
は使用しないことがあります。これは、後続の呼び出しで wcsrtombs
を使用しており、wcstombs
は使用しない場合です。
C++ では、この関数にテンプレートのオーバーロードがあります。このオーバーロードは、この関数に対応するセキュリティで保護された新しい関数を呼び出します。 詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
例外
wcrtomb
関数は、この関数の実行中に現行スレッドのどの関数も setlocale
を呼び出さず、かつ mbstate
が null である限り、マルチスレッド セーフです。
例
// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.
#include <string.h>
#include <stdio.h>
#include <wchar.h>
int main( void )
{
size_t sizeOfCovertion = 0;
mbstate_t mbstate;
char mbStr = 0;
wchar_t* wcStr = L"Q";
// Reset to initial conversion state
memset(&mbstate, 0, sizeof(mbstate));
sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
// Note: wcrtomb is deprecated; consider using wcrtomb_s instead
if (sizeOfCovertion > 0)
{
printf("The corresponding wide character \"");
wprintf(L"%s\"", wcStr);
printf(" was converted to the \"%c\" ", mbStr);
printf("multibyte character.\n");
}
else
{
printf("No corresponding multibyte character "
"was found.\n");
}
}
The corresponding wide character "Q" was converted to the "Q" multibyte character.
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
wcrtomb |
<wchar.h> |