Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction wcstombs

La fonction system La fonction wctomb


Entête à inclure

#include <stdlib.h>  // <cstdlib> en C++

Fonction wcstombs

size_t wcstombs( char * destination, const wchar_t * source, size_t maxLength );

Cette fonction, dont le nom signifie « wide characters string to multibytes string », permet de transformer une chaîne de caractères « wide characters » (de type wchar_t *) en une chaîne de caractères « multibytes » (de type char *), dans la limite d'un nombre de caractères maximal à ne pas dépasser.

dans la grande majorité des cas, vos chaînes de type « multibytes characters » seront basées sur encodage UTF-8 et vos chaînes de type « wild characters » seront basées sur un encodage UTF-16. Mais d'autres situations peuvent être envisagées.

Paramètres

Valeur de retour

La fonction renvoi le nombre de caractères recopié dans la chaîne de caractères de type < mutilbyates > (hors caractère '\0 terminal).

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>      // wide character string

int main() {

    // On se place en mode UTF-8 pour gérer des caractères multi-octets.
    setlocale( LC_ALL, "en_US.utf8" );

    // On crée une chaîne avec des caractères de type "wide char" en utilisant l'encodage UTF-16.
    const wchar_t * wstr = L"\u03c0 est un sigle mathématique. \u4774 est un idéogramme chinois.";
    size_t charCount = wcslen( wstr ) + 10;         // +10 => un peu de mou pour les caractères multibytes

    // On affiche notre chaîne de caractères encodée en UTF-16
    printf( "%ls\n", wstr );

    // On passe en représentation UTF-8 / multibytes string
    char str[ charCount ];
    size_t writedBytesCount = wcstombs( str, wstr, charCount );
    printf( "Count %lu\n", writedBytesCount );

    // On affiche notre chaîne de caractères encodée en UTF-8
    printf( "%s\n", str );

    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction wcstombs

Et voici les résultats produits par cet exemple :

$> gcc -o sample sample.c
$> ./sample
π est un sigle mathématique. 䝴 est un idéogramme Chinois.
Count 62
π est un sigle mathématique. 䝴 est un idéogramme Chinois.
$> 

Sujets connexes

MB_CUR_MAX
mblen
mbstowcs
mbtowc
wctomb


La fonction system La fonction wctomb