Partager via


wcrtomb_s

Convertissez un caractère élargi en sa représentation de caractères multioctets.Une version de wcrtomb avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du 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

Paramètres

  • [out] pReturnValue
    Retourne le nombre d'octets écrits ou -1 si une erreur s'est produite.

  • [out] mbchar
    Le caractère converti multioctets résultant.

  • [in] sizeOfmbchar
    la taille de la variable d' mbchar en octets.

  • [in] wchar
    Un caractère élargi à convertir.

  • [in] mbstate
    Un pointeur vers un objet d' mbstate_t .

Valeur de retour

Retourne zéro ou une valeur d' errno si une erreur se produit.

Notes

La fonction d' wcrtomb_s convertit un caractère élargi, en commençant dans le rapport de conversion spécifié contenu dans mbstate, la valeur contenue dans wchar, dans l'adresse représentée par mbchar.La valeur d' pReturnValue ne sera le nombre d'octets convertis, mais pas plus que les octets d' MB_CUR_MAX , ou un -1 si une erreur s'est produite.

Si mbstate est null, le rapport de conversion interne d' mbstate_t est utilisé.Si le caractère contenu dans wchar n'a pas un caractère multioctets correspondant, la valeur d' pReturnValue est -1 et la fonction retourne la valeur d' errno d' EILSEQ.

la fonction d' wcrtomb_s diffère de wctomb_s, _wctomb_s_l par sa capacité à redémarrer.Le rapport de conversion est stocké dans mbstate pour les appels suivants à la même transparence ou à d'autres fonctions restartable.Les résultats sont indéfinis en combinant l'utilisation des fonctions restartable et nonrestartable.Par exemple, une application utilise wcsrlen plutôt qu' wcslen, si un appel suivant à wcsrtombs_s étaient utilisés au lieu d' wcstombs_s.

En C++, grâce à cette fonction est simplifié par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement (en éliminant le besoin de spécifier un argument de taille) et peuvent remplacer automatiquement des fonctions plus anciennes et non sécurisées par leurs nouvelles, sécurisées équivalents.Pour plus d'informations, consultez Surcharges sécurisées de modèle.

Exceptions

La fonction d' wcrtomb_s est multithread-safe tant qu'aucune fonction dans le thread actuel n'appelle setlocale bien que cette fonction s'exécute et mbstate est null.

Exemple

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

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Configuration requise

routine

en-tête requis

wcrtomb_s

<wchar.h>

Voir aussi

Référence

Conversion de données

Paramètres régionaux

Interprétation des séquences de caractères multioctets

mbsinit