Sdílet prostřednictvím


wcrtomb_s

Široký znak převeďte jeho znázornění vícebajtových znaků.Verze wcrtomb s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.

errno_t wcrtomb_s(
   size_t *pReturnValue,
   char *mbchar,
   size_t sizeOfmbchar,
   wchar_t *wchar,
   mbstate_t *mbstate
);
template <size_t size>
errno_t wcrtomb_s(
   size_t *pReturnValue,
   char (&mbchar)[size],
   wchar_t *wchar,
   mbstate_t *mbstate
); // C++ only

Parametry

  • [výstup]pReturnValue
    Vrátí počet bajtů zapsaných nebo -1, pokud došlo k chybě.

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

  • [v]sizeOfmbchar
    Velikost mbchar proměnné v bajtech.

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

  • [v]mbstate
    Ukazatel na mbstate_t objektu.

Vrácená hodnota

Vrátí nulu nebo errno hodnotu, pokud dojde k chybě.

Poznámky

wcrtomb_s 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.pReturnValue Hodnota bude počet bajtů, které jsou převedeny, ale ne více než MB_CUR_MAX bajtů nebo -1 Pokud došlo k chybě.

Pokud mbstate má hodnotu null, vnitřní mbstate_t slouží k převodu stavu.Pokud znak obsažený v wchar nemá odpovídající vícebajtové znakové hodnoty pReturnValue bude -1 a vrátí funkce errno hodnotu EILSEQ.

wcrtomb_s Funkce se liší od wctomb_s _wctomb_s_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 wcslen, pokud následné volání wcsrtombs_s byly použity namístowcstombs_s.

V jazyce C++ použití této funkce je zjednodušeno díky šablony přetížení; přetížení automaticky odvodit vyrovnávací paměti (není tak nutné zadat argument velikost) a jsou automaticky nahradit starší, -secure funkce s jejich protějšky novější, zabezpečené.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Výjimky

wcrtomb_s Multithread bezpečné je funkce jako žádná funkce v aktuální podproces volá setlocale při této funkce je provádění a mbstate má hodnotu null.

Příklad

// crt_wcrtomb_s.c
// This program converts a wide character
// to its corresponding multibyte character.
//

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    errno_t     returnValue;
    size_t      pReturnValue;
    mbstate_t   mbstate;
    size_t      sizeOfmbStr = 1;
    char        mbchar = 0;
    wchar_t*    wchar = L"Q\0";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    returnValue = wcrtomb_s(&pReturnValue, &mbchar, sizeof(char),
                            *wchar, &mbstate);
    if (returnValue == 0) {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wchar);
        printf(" was converted to a the \"%c\" ", mbchar);
        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_s

<wchar.h>

Viz také

Referenční dokumentace

Převod dat

Národní prostředí

Výklad vícebajtové znakové sekvence

mbsinit