Partager via


wcsrtombs

Convertit une chaîne à caractères larges à sa représentation de chaîne à caractères multioctets.un plus version sécurisée de cette fonction est disponible ; consultez wcsrtombs_s.

size_t wcsrtombs(
   char *mbstr,
   const wchar_t **wcstr,
   sizeof count,
   mbstate_t *mbstate
);
template <size_t size>
size_t wcsrtombs(
   char (&mbstr)[size],
   const wchar_t **wcstr,
   sizeof count,
   mbstate_t *mbstate
); // C++ only

Paramètres

  • [out] mbstr
    L'emplacement de l'adresse de la chaîne à caractères multioctets convertie résultante.

  • [in] wcstr
    Indirectement pointe vers l'emplacement de la chaîne à caractères larges à convertir.

  • [in] count
    Le nombre de caractères à convertir.

  • [in] mbstate
    Un pointeur vers un objet du rapport de conversion d' mbstate_t .

Valeur de retour

Retourne le nombre d'octets avec succès convertis, sans null et l'octet null (le cas échéant), sinon l'si une erreur s'est produite.

Notes

La fonction d' wcsrtombs convertit une chaîne de caractères larges, en commençant dans le rapport de conversion spécifié contenu dans mbstate, de l'aigu indirect de valeurs à dans wcstr, dans l'adresse d' mbstr.La conversion continuera pour chaque caractère until : après que la valeur null de fin le caractère élargi est produit, lorsqu'un caractère non-concordant est produit ou lorsque le caractère suivant dépasse la limite contenue dans count.Si wcsrtombs 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 wcsrtombs rencontre un caractère Null de caractère élargi pendant la conversion.Si les séquences pointées par wcstr et mbstr se chevauchent, le comportement d' wcsrtombs n'est pas défini.wcsrtombs est affectée par la catégorie de LC_TYPE des paramètres régionaux.

la fonction d' wcsrtombs diffère de wcstombs, _wcstombs_l par sa capacité à redémarrer.Le rapport de conversion est stocké dans mbstate pour les appels suivants à la même transparence ou à d'autres fonctions restartable.Les résultats sont indéfinis en combinant l'utilisation des fonctions restartable et nonrestartable.Par exemple, une application utilise wcsrlen plutôt qu' wcsnlen, si un appel suivant à wcsrtombs étaient utilisés au lieu d' wcstombs.

Si l'argument d' mbstr est NULL, wcsrtombs retourne la taille requise en octets de la chaîne de destination.Si mbstate est null, le rapport de conversion interne d' mbstate_t est utilisé.Si la séquence de caractères wchar n'a pas de représentation correspondante de caractères multioctets, une valeur est retournée par et errno est défini à EILSEQ.

En C++, cette fonction a une surcharge de modèle qui appelle les homologues plus récentes et sécurisées de cette fonction.Pour plus d'informations, consultez Surcharges sécurisées de modèle.

Exceptions

La fonction d' wcsrtombs est multithread-safe tant qu'aucune fonction dans le thread actuel n'appelle setlocale bien que cette fonction s'exécute et mbstate n'est pas null.

Exemple

// crt_wcsrtombs.cpp
// compile with: /W3
// This code example converts a wide
// character string into a multibyte
// character string.

#include <stdio.h>
#include <memory.h>
#include <wchar.h>
#include <errno.h>

#define MB_BUFFER_SIZE 100

int main()
{
    const wchar_t   wcString[] = 
                    {L"Every good boy does fine."};
    const wchar_t   *wcsIndirectString = wcString;
    char            mbString[MB_BUFFER_SIZE];
    size_t          countConverted;
    mbstate_t       mbstate;

    // Reset to initial shift state
    ::memset((void*)&mbstate, 0, sizeof(mbstate));

    countConverted = wcsrtombs(mbString, &wcsIndirectString,
                               MB_BUFFER_SIZE, &mbstate); // C4996
    // Note: wcsrtombs is deprecated; consider using wcsrtombs_s
    if (errno == EILSEQ)
    {
        printf( "An encoding error was detected in the string.\n" );
    }
    else 
    {
        printf( "The string was successfuly converted.\n" );
    }
}
  

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

Configuration requise

routine

en-tête requis

wcsrtombs

<wchar.h>

Voir aussi

Référence

Conversion de données

Paramètres régionaux

Interprétation des séquences de caractères multioctets

wcrtomb

wcrtomb_s

wctomb, _wctomb_l

wcstombs, _wcstombs_l

mbsinit