C ++ mbsrtowcs () - Bibliothèque standard C ++

La fonction mbsrtowcs () en C ++ convertit une séquence de caractères multioctets étroite en une séquence de caractères large (de type wchar_t).

La fonction mbsrtowcs () est définie dans le fichier d'en-tête.

prototype mbsrtowcs ()

 size_t mbsrtowcs (wchar_t * dest, const char ** src, size_t len, mbstate_t * ps);

La fonction mbsrtowcs () convertit la chaîne de caractères multi-octets dont le premier octet est représenté par * src en représentation de caractères larges correspondante et est stockée dans le tableau de caractères large pointé par dest. Un maximum de caractères len larges sont écrits dans dest.

Le processus de conversion est similaire à l'appel répété de mbrtowc (). La conversion s'arrête si:

  • Un caractère nul multi-octets a été converti et stocké. Dans ce cas, src est défini sur null et ps représente l'état de décalage initial.
  • Un caractère multi-octets non valide a été rencontré. Dans ce cas, src est défini pour pointer le début du premier caractère multi-octets non converti.
  • Le caractère large a été stocké dans dest. Dans ce cas, src est défini pour pointer le début du premier caractère multi-octets non converti.

Paramètres de mbsrtowcs ()

  • dest: pointeur vers le tableau dans lequel le caractère large converti est stocké.
  • src: pointeur vers le pointeur sur le premier caractère multi-octets à convertir.
  • len: Nombre maximum de caractères larges à stocker.
  • ps: pointeur vers l'état de conversion utilisé lors de l'interprétation de la chaîne multi-octets

mbsrtowcs () Valeur renvoyée

  • En cas de succès, la fonction mbsrtowcs () renvoie le nombre de caractères larges écrits dans dest à l'exclusion du caractère nul large de fin. Si dest est un pointeur nul, il renvoie le nombre de caractères larges qui auraient été écrits en considérant une longueur illimitée.
  • En cas d'erreur de conversion, -1 est renvoyé et errno est défini sur EILSEQ .

Exemple: comment fonctionne la fonction mbsrtowcs ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

Lorsque vous exécutez le programme, la sortie sera:

 Nombre de caractères larges écrits (sauf L " 0") = 4 Caractères larges = ݣݗݿݟ

Articles intéressants...