Le rôle de la fonction mbstowcs () et de la fonction wcstombs ()

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

Je suppose que tu aimes

Origine blog.csdn.net/my_angle2016/article/details/115303168
conseillé
Classement