Fichiers d'en-tête requis:
#include <stdlib.h>
Fonction mbstowcs ()
Fonction: convertir des caractères multi-octets en octets larges
Prototype:
taille_t mbstowcs (
wchar_t * wcstr,
const char * mbstr,
size_t count
);
Description du paramètre:
- cache cible wcstr, utilisé pour stocker les caractères de gros octets après la conversion; lorsque la valeur est NULL, la valeur de retour est le nombre de types wchar_t requis par le cache cible
- mbstr est utilisé pour stocker la chaîne multi-octets à convertir
- count est utilisé pour spécifier le nombre maximum d'octets à convertir. Lorsque la valeur de wcst est NULL, la valeur est inutile
valeur de retour:
- Lorsque la conversion est réussie et wcstr == NULL, renvoie la taille requise par le cache cible (le nombre de types wchar_t, mais sans le terminateur);
- Lorsque la conversion est réussie et wcstd! = NULL, le nombre d'octets convertis est renvoyé;
- La conversion échoue, retourne (size_t) (- 1);
Étapes d'utilisation:
- Appelez la fonction mbstowcs () et définissez le paramètre wcstr sur NULL (pour obtenir la taille du tampon de réception requis pour la conversion);
- Allouez suffisamment de blocs de mémoire à la zone tampon cible pour stocker la chaîne wchar_t convertie;
Remarque: la taille du bloc de mémoire est déterminée par la valeur de retour du premier appel à la fonction mbstowcs () (la valeur de retour n'inclut pas l'espace pour le terminateur)
- Appelez à nouveau la fonction mbstowcs (), cette fois en passant l'adresse du cache cible comme paramètre wcstr;
Exemple de code:
strcpy(sBuf, "我最棒");
size_t sSize=strlen(sBuf);
wchar_t * dBuf=NULL;
//注意:需要多分配一个空间,以存放终止符
int dSize=mbstowcs(dBuf, sBuf, 0)+1;
dBuf=new wchar_t[dSize];
wmemset(dBuf, 0, dSize);
int nRet=mbstowcs(dBuf, sBuf, sSize);
if(nRet<=0)
{
printf("转换失败\n");
}
else
{
printf("转换成功%d字符\n", nRet);
wprintf(L"%ls\n", dBuf);
}
fonction wcstombs ()
Fonction: convertir un octet large en chaîne de caractères multi-octets
prototype:
size_t wcstombs (
char * mbstr,
const wchar_t * wcstr,
size_t count
);
Description du paramètre:
- Le cache cible wcstr est utilisé pour stocker les caractères multi-octets convertis, lorsque la valeur est NULL, la valeur de retour est le nombre de types wchar_t requis par le cache cible;
- mbstr est utilisé pour stocker les caractères larges à convertir;
- count est utilisé pour spécifier le nombre maximum d'octets qui peuvent être stockés dans le tampon de réception;
valeur de retour:
- Lorsque la conversion est réussie, et mbstr == NULL, renvoie la taille requise par le cache cible (le nombre de types de caractères, mais sans terminateur);
- Lorsque la conversion est réussie et mbstr! = NULL, le nombre d'octets convertis sera renvoyé;
- Si la conversion échoue, retournez (size_t) (- 1);
Instructions:
Similaire à la méthode mbstowcs ()
Exemple de code:
wchar_t sBuf[20]={0};
wcscpy(sBuf, L"Hello");
size_t sSize=wcslen(sBuf);
char * dBuf=NULL;
int dSize=wcstombs(dBuf, sBuf, 0)+1;
printf("需要%d Char\n", dSize);
dBuf=new char[dSize];
memset(dBuf, 0, dSize);
int nRet=wcstombs(dBuf, sBuf, dSize);
if(nRet<=0)
{
printf("转换失败\n");
}
else
{
printf("转换成功%d字符\n", nRet);
printf("%s\n", dBuf);
}
Remarque: L'
octet large, c'est-à-dire le type wchar_t utilise le codage Unicode, qui est utf-16 sous Windows et utf-32 sous Linux, tandis que le multi-octet peut être de nombreuses autres méthodes de codage, telles que utf-8, GB232. .. Par conséquent, vous devez spécifier le type de codage multi-octets pour effectuer le processus de conversion normal. Définissez ou obtenez la fonction pour le codage multi-octets: setlocale ()
Fichier d'en-tête obligatoire: locale.h
#include <locale.h>
fonction ogo