Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

wcrtomb_s

Convertir un caractère large dans sa représentation de caractères multioctets. Il s'agit de versions de wcrtomb avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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

[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 mbchar en octets.

[in] wchar

Caractère large à convertir.

[in] mbstate

Pointeur vers un objet mbstate_t.

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

La fonction wcrtomb_s convertit un caractère large, commençant dans l'état de conversion spécifié contenu dans mbstate, depuis la valeur contenue dans wchar, dans l'adresse représentée par mbchar. La valeur pReturnValue sera le nombre d'octets convertis, mais pas plus que MB_CUR_MAX octets, ou -1 si une erreur se produit.

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

La fonction wcrtomb_s diffère de wctomb_s, _wctomb_s_l par sa capacité à redémarrer. L'état de conversion est stocké dans mbstate pour d'autres appels à la même ou a d'autres fonctions redémarrable. Les résultats sont indéfinis lorsqu'on mélange l'utilisation de fonctions redémarrable et non redémarrable. Par exemple, une application utilise wcsrlen plutôt que wcslen, si l'appel suivant à wcsrtombs_s est utilisé à la place de wcstombs_s.

En C++, l'utilisation de cette fonction est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire la longueur de la mémoire tampon automatiquement (ce qui évite d'avoir à spécifier un argument taille) et peuvent remplacer automatiquement les fonctions plus anciennes et non sécurisées par leurs équivalentes plus récentes et sécurisées. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

La fonction wcrtomb_s est multithread-safe à condition qu'aucune fonction du thread actuel n'appelle setlocale lorsque cette fonction s'exécute et que mbstate est null.

// 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");
    }
}
Le caractère large correspondant « Q » a été converti en un caractère multioctets « Q ».

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Routine

En-tête requis

wcrtomb_s

<wchar.h>

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft