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 mbtowc

La fonction mbstowcs La fonction qsort


Entête à inclure

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

Fonction mbtowc

int mbtowc( wchar_t * wideCharPtr, const char * multiBytesPtr, size_t charSizeMax );

Cette fonction, dont le nom signifie « multibytes to wide characters », permet de transformer un caractère « multibytes » (stocké sur un ou plusieurs octets) en un caractère « wide characters » (de type wchar_t).

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

Si le paramètre multiBytesPtr est non nul, la fonction renvoi -1 si la transformation ne peut être effectuée, ou le nombre d'octets utilisé par le caractère d'origine.

Si le paramètre multiBytesPtr est nul, la fonction renvoie une valeur non nulle si l'encodage propose des caractères de tailles variable, ou zéro si la place occupée par un caractère quelconque est fixe.

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 
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>

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.";

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

    wchar_t wstr[2];
    wstr[1] = '\0';     // zéro terminal

    // On transforme le premier caractère en représentation UTF-16 / wchar (wide char)
    if ( mbtowc( &wstr[0], str, MB_CUR_MAX ) != -1 ) {
        // 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 mbtowc

Et voici les résultats produits par cet exemple :

$> gcc -o sample sample.c
$> ./sample
π est un sigle mathématique. 
π
$> 

Sujets connexes

MB_CUR_MAX
mblen
mbstowcs
wcstombs
wctomb


La fonction mblen La fonction mbtowc