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

La fonction wcsrtombs () en C ++ convertit une séquence de caractères large en une séquence de caractères multi-octets étroite.

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

prototype wcsrtombs ()

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

La fonction wcsrtombs () convertit la chaîne de caractères large représentée par * src en chaîne de caractères multioctets correspondante et est stockée dans le tableau de caractères pointé par dest si dest n'est pas nul. Un maximum de caractères len est écrit dans dest.

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

  • Un caractère nul large 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 large non valide a été rencontré. Dans ce cas, src est défini pour pointer le début du premier caractère large non converti.
  • len octets a été stocké dans dest. Dans ce cas, src est défini pour indiquer le début du premier caractère large non converti.

Paramètres wcsrtombs ()

  • > dest: pointeur vers le tableau de caractères dans lequel le caractère multi-octets converti est stocké.
  • src: pointeur vers le pointeur vers le premier caractère large à convertir.
  • len: nombre maximum d'octets disponibles dans le tableau dest.
  • ps: pointeur vers l'objet d'état de conversion.

wcsrtombs () Valeur de retour

  • En cas de succès, la fonction wcsrtombs () renvoie le nombre de caractères multi-octets écrits dans dest en excluant le caractère nul large de fin mais en incluant les séquences de décalage.
    Si dest est un pointeur nul, il renvoie le nombre de caractères larges qui auraient été écrits en excluant le caractère nul de fin.
  • En cas d'erreur de conversion, -1 est renvoyé et errno est défini sur EILSEQ .

Exemple: Comment fonctionne la fonction wcsrtombs ()?

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

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

 Nombre de caractères multi-octets écrits (à l'exclusion de " 0") = 8 Caractère multi-octets = ݣݗݿݟ

Articles intéressants...