Partager via


wcrtomb

Convertit un caractère large dans sa représentation de caractère multioctet. Une version plus sécurisée de cette fonction est disponible ; voir wcrtomb_s.

Syntaxe

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

Paramètres

mbchar
Résultat de la conversion du caractère multioctet.

wchar
Caractère large à convertir.

mbstate
Pointeur vers un objet mbstate_t .

Valeur retournée

Retourne le nombre d’octets nécessaire pour représenter le caractère multioctet converti ou -1 si une erreur se produit.

Notes

La fonction wcrtomb convertit un caractère large, en commençant dans l’état de conversion spécifié dans mbstate, à partir de la valeur contenue dans wchar, en adresse représentée par mbchar. La valeur de retour correspond au nombre d’octets nécessaires pour représenter le caractère multioctet correspondant, mais elle ne retourne pas plus de MB_CUR_MAX octets.

Si mbstate a la valeur Null, l’objet mbstate_t interne contenant l’état de conversion mbchar est utilisé. Si la séquence wchar de caractères n’a pas de représentation de caractère multioctet correspondante, un -1 est retourné et la valeur errno est définie EILSEQsur .

La wcrtomb fonction diffère de , _wctomb_l par wctombsa capacité de redémarrage. L'état de la conversion est stocké dans mbstate pour les appels suivants à la même ou à d'autres fonctions redémarrables. Les résultats ne sont pas définis quand l'utilisation de fonctions redémarrables est combinée avec l'utilisation de fonctions non redémarrables. Par exemple, une application utiliserait wcsrlen plutôt que wcsnlen si un appel ultérieur à wcsrtombs était utilisé à la place de wcstombs.

En C++, cette fonction a une surcharge de modèle qui appelle les équivalents plus récents et sécurisés de cette fonction. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Exceptions

La fonction wcrtomb est multithread-safe tant qu’aucune fonction du thread actif n’appelle setlocale pendant l’exécution de cette fonction et que mbstate a la valeur Null.

Exemple

// 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.

Spécifications

Routine En-tête requis
wcrtomb <wchar.h>

Voir aussi

Conversion de données
Paramètres régionaux
Interprétation des séquences de caractères multioctets
mbsinit