Partager via


wcstombs, _wcstombs_l

convertit une séquence de caractères larges à une séquence correspondante de caractères multioctets.plus les versions sécurisées de ces fonctions sont disponibles ; consultez wcstombs_s, _wcstombs_s_l.

size_t wcstombs(
   char *mbstr,
   const wchar_t *wcstr,
   size_t count 
);
size_t _wcstombs_l(
   char *mbstr,
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
size_t wcstombs(
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count 
); // C++ only
template <size_t size>
size_t _wcstombs_l(
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
); // C++ only

Paramètres

  • mbstr
    l'adresse d'une séquence de caractères multioctets.

  • wcstr
    l'adresse d'une séquence de caractères larges.

  • count
    Nombre maximal d'octets qui peuvent être stockés dans la chaîne multioctets de sortie.

  • locale
    Les paramètres régionaux à utiliser.

Valeur de retour

Si wcstombs convertit correctement la chaîne multioctets, il retourne le nombre d'octets entrés dans la chaîne multioctets de sortie, à l'exclusion d' NULL de fin (le cas échéant).Si l'argument d' mbstr est NULL, wcstombs retourne la taille requise en octets de la chaîne de destination.Si wcstombs rencontre un caractère élargi qu'il ne peut pas convertir en un caractère multioctets, il retourne - 1 cast en type size_t et définit errno à EILSEQ.

Notes

La fonction d' wcstombs convertit la chaîne à caractères larges désignée par wcstr aux caractères multioctets correspondants et stocke les résultats dans le tableau d' mbstr .Le paramètre d' count indique le nombre maximal d'octets qui peuvent être stockés dans la chaîne multioctets de sortie (autrement dit, la taille d' mbstr).En général elle n'est pas connue le nombre d'octets sont requis lorsque vous convertissez une chaîne à caractères larges.Certains caractères larges auront besoin d'un octet dans la chaîne de sortie ; d'autres nécessitent deux.S'il y a deux octets dans la chaîne multioctets de sortie pour chaque caractère élargi dans la chaîne d'entrée (caractère élargi y compris NULL), le résultat est garanti pour s'adapter.

Si wcstombs rencontre le caractère NULL à caractères larges (L \ 0 ') ou avant ou lorsque count se produit, il convertit en 0 de 8 bits et s'arrête.Ainsi, la chaîne à caractères multioctets à l'adresse mbstr se terminant par null uniquement si wcstombs rencontre un caractère Null à caractère élargi pendant la conversion.Si les séquences pointées par wcstr et mbstr se chevauchent, le comportement d' wcstombs n'est pas défini.

Si l'argument d' mbstr est NULL, wcstombs retourne la taille requise en octets de la chaîne de destination.

wcstombs valide ses paramètres.Si wcstr est NULL, ou si count est supérieureINT_MAX, cette fonction appelle le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres .Si est autorisé à l'exécution de se poursuivre, la fonction définit errno à EINVAL et retourne -1.

wcstombs utilise les paramètres régionaux définis pour tout comportement dépendant des paramètres régionaux ; _wcstombs_l est identique mais il utilise les paramètres régionaux passés à la place.Pour plus d'informations, consultez Paramètres régionaux.

En C++, ces fonctions ont des surcharges de modèle qui appellent plus le nouveau, sécuriser des équivalents de ces fonctions.Pour plus d'informations, consultez Surcharges sécurisées de modèle.

Configuration requise

routine

en-tête requis

wcstombs

<stdlib.h>

_wcstombs_l

<stdlib.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Exemple

ce programme illustre le comportement de la fonction d' wcstombs .

// crt_wcstombs.c
// compile with: /W3
// This example demonstrates the use
// of wcstombs, which converts a string
// of wide characters to a string of 
// multibyte characters.

#include <stdlib.h>
#include <stdio.h>

#define BUFFER_SIZE 100

int main( void )
{
    size_t  count;
    char    *pMBBuffer = (char *)malloc( BUFFER_SIZE );
    wchar_t *pWCBuffer = L"Hello, world.";

    printf("Convert wide-character string:\n" );

    count = wcstombs(pMBBuffer, pWCBuffer, BUFFER_SIZE ); // C4996
    // Note: wcstombs is deprecated; consider using wcstombs_s instead
    printf("   Characters converted: %u\n",
            count );
    printf("    Multibyte character: %s\n\n",
           pMBBuffer );

    free(pMBBuffer);
}
  

É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é.

Voir aussi

Référence

Conversion de données

Paramètres régionaux

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wctomb, _wctomb_l

WideCharToMultiByte