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 mbstowcs

La fonction mblen La fonction mbtowc


Entête à inclure

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

Fonction mbstowcs

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

Cette fonction, dont le nom signifie « multibytes string to wide characters string », permet de transformer une chaîne de caractères « multibytes » (de type char *) en une chaîne de caractères « wide characters » (de type wchar_t *), 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 wchar_t * (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>

#define CHAR_COUNT 58

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 multi-octets en utilisant l'encodage UTF-8.
    const char * str = u8"\u03c0 est un sigle mathématique. \u4774 est un idéogramme chinois.";

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

    // On passe en représentation UTF-16 / wchar (wide char)
    wchar_t wstr[ CHAR_COUNT ];
    size_t copiedCharCount = mbstowcs( wstr, str, CHAR_COUNT );
    printf( "Count %lu\n", copiedCharCount );

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

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

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 57
π est un sigle mathématique. 䝴 est un idéogramme Chinois.
$> 

Sujets connexes

MB_CUR_MAX
mblen
mbtowc
wcstombs
wctomb


La fonction mblen La fonction mbtowc