#include <stdlib.h> // <cstdlib> en C++
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.
destination : un pointeur sur la chaîne de caractères de type char *
, certainement associée à un encodage UTF-8.
source : un pointeur sur la chaîne de caractères initiale, de type wchar_t
et certainement associée à un encodage UTF-16.
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 < mutilbyates > (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> #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; } |
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. $>
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 :