#include <stdlib.h> // <cstdlib> en C++
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.
destination : un pointeur sur la chaîne de caractères de type wchar_t *
, certainement associée à un encodage UTF-16.
source : un pointeur sur la chaîne de caractères initiale, certainement associée à un encodage UTF-8.
maxLength : le nombre de caractères maximal à recopier (hors caractère '\0
terminal).
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).
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; } |
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. $>
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 :