共用方式為


wcrtomb

寬字元轉換為它的多位元組字元表示。 更安全版本之這個函式是可使用; see 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

參數

  • [out] mbchar
    產生的多位元組轉換的字元。

  • [in] wchar
    要轉換的寬字元。

  • [in] mbstate
    變數的指標, mbstate_t物件。

傳回值

傳回代表已轉換的多位元組字元,否則為-1 發生錯誤時所需的位元組數目。

備註

wcrtomb函式將轉換寬的字元,並開始在指定的轉換狀態包含在mbstate,在所包含的值從wchar,插入地址所表示mbchar。 傳回的值來代表相對應的多位元組字元,所需的位元組數目,但它不會傳回多個MB_CUR_MAX個位元組。

如果mbstate為 null,內部mbstate_t物件,其中包含的轉換狀態mbchar用。 如果字元順序wchar並沒有相對應的多位元組字元表示法,傳回-1 和errno設定為 [ EILSEQ。

wcrtomb函式會不同於wctomb _wctomb_l由其重新。 轉換狀態儲存在mbstate進行後續的呼叫至相同或其他可重新啟動的功能。 混合的重新啟動的和即可函式使用時,結果是未定義。 例如,應用程式會使用wcsrlen而不是wcsnlen,如果的後續呼叫wcsrtombs而不是使用wcstombs。

在 C++ 中,這個函式會有較新的、 安全的對應,此函式會叫用的範本多載。 如需詳細資訊,請參閱 安全範本多載

例外狀況

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");
    }
}
  

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

需求

常式

所需的標頭

wcrtomb

<wchar.h>

請參閱

參考

資料轉換

地區設定

多位元組字元序列的轉譯工作

mbsinit