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

wcsrtombs

Convertir une chaîne de caractères larges en sa représentation de chaîne de caractères multioctets. Des versions plus sécurisées de ces fonctions sont disponibles ; 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

[out] mbstr

L'emplacement de l'adresse de la chaîne de caractères multioctets convertie résultante.

[in] wcstr

Pointe indirectement vers l'emplacement de la chaîne de caractères larges à convertir.

[in] count

Nombre de caractères à convertir.

[in] mbstate

Un pointeur vers un objet d'état de conversion mbstate_t .

Retourne le nombre d'octets correctement convertis, à l'exclusion de l'octet null de fin (s'il existe), sinon -1 si une erreur se produit.

La fonction wcsrtombs convertit une chaîne de caractères larges, depuis l'état de conversion spécifié contenu dans mbstate, depuis les valeurs indirectement référencées dans wcstr, dans l'adresse de mbstr. La conversion se poursuit pour chaque caractère jusqu'à ce que : après avoir rencontré un caractère large de fin null, ou si le caractère suivant excède la limite contenue dans count. Si wcsrtombs rencontre le caractère large null (L'\0') avant ou lorsque count arrive, il le convertit en un zéro de 8 bits et s'arrête.

Par conséquent, la chaîne de caractères multioctets à mbstr se termine par null uniquement si wcsrtombs rencontre un caractère NULL de caractères larges lors de la conversion. Si les séquences désignées par wcstr et mbstr se chevauchent, le comportement de wcsrtombs n'est pas défini. wcsrtombs est affecté par la catégorie LC_TYPE des paramètres régionaux actuels.

La fonction wcsrtombs diffère de wcstombs, _wcstombs_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 lorqu'on mélange l'utilisation de fonctions redémarrable et non redémarrable. Par exemple, une application utilise wcsrlen plutôt que wcsnlen, si l'appel suivant à wcsrtombs est utilisé à la place de wcstombs

Si l'argument mbstr est NULL, wcsrtombs retourne la taille requise en octets de la chaine de destination. Si mbstate est NULL, l'état de conversion interne mbstate_t est utilisé. Si la séquence de caractères wchar n'a pas une représentation correspondante en caractères multioctets, -1 est retourné et errno est défini à la valeur EILSEQ.

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.

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

// 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" );
    }
}
La chaîne a été correctement convertie.

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

wcsrtombs

<wchar.h>

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft