Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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