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 EILSEQ
sur .
La wcrtomb
fonction diffère de , _wctomb_l
par wctomb
sa 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