Sdílet prostřednictvím


wcrtomb

Široký znak převeďte jeho znázornění vícebajtových znaků.Bezpečnější verze této funkce je k dispozici; 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

Parametry

  • [výstup]mbchar
    Výsledné vícebajtové převést znak.

  • [v]wchar
    Široký znak převést.

  • [v]mbstate
    Ukazatel na mbstate_t objektu.

Vrácená hodnota

Vrátí počet bajtů potřebných k reprezentaci převedené vícebajtové znakové jinak hodnota -1 Pokud dojde k chybě.

Poznámky

wcrtomb Funkce převede širokých znaků, počínaje zadaný převod státu obsažených v mbstate, z hodnoty obsažené v wchar, na adresu reprezentované mbchar.Vrácená hodnota je počet bajtů potřebných k představují odpovídající vícebajtových znaků, ale nebude více než MB_CUR_MAX bajtů.

Pokud mbstate má hodnotu null, vnitřní mbstate_t objekt obsahující stavu převodu mbchar se používá.Pokud je sekvence znaků wchar nemá odpovídající vícebajtové znakové vyjádření, je vrácena hodnota -1 a errno je nastavena na EILSEQ.

wcrtomb Funkce se liší od wctomb, _wctomb_l podle jeho restartability.Stav převodu je uložen v mbstate pro následné volání na stejné nebo jiné funkce s možností restartování.Výsledky nedefinované při použití funkce restartování a nonrestartable.Například použít aplikaci wcsrlen namísto wcsnlen, pokud následné volání wcsrtombs byly použity namísto wcstombs.

Tato funkce v jazyce C++ má přetížení šablonu, která vyvolá protějšky novější, zabezpečené této funkce.Další informace naleznete v tématu Přetížení zabezpečení šablony.

Výjimky

wcrtomb Multithread bezpečné je funkce jako žádná funkce v aktuální podproces volá setlocale v době, kdy je tato funkce spuštění a při mbstate má hodnotu null.

Příklad

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

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Požadavky

Rutina

Požadované záhlaví

wcrtomb

<wchar.h>

Viz také

Referenční dokumentace

Převod dat

Národní prostředí

Výklad sekvencí vícebajtových znaků

mbsinit