C ++ wcsrtombs () - Biblioteca standard C ++

Funcția wcsrtombs () în C ++ convertește o secvență largă de caractere într-o secvență îngustă de caractere multibyte.

Funcția wcsrtombs () este definită în fișierul antet.

wcsrtombs () prototip

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

Funcția wcsrtombs () convertește șirul larg de caractere reprezentat de * src în șirul de caractere multibyte corespunzător și este stocat în matricea de caractere indicată de dest dacă dest nu este nul. Un maxim de caractere len sunt scrise la dest.

Procesul de conversie este similar cu apelarea în mod repetat a wcrtomb (). Conversia se oprește dacă:

  • Un caracter larg nul a fost convertit și stocat. În acest caz, src este setat la nul și ps reprezintă starea inițială de schimbare.
  • A fost întâlnit un caracter larg nevalid. În acest caz, src este setat să indice începutul primului caracter larg neconvertit.
  • octetii len au fost stocate în dest. În acest caz, src este setat să indice începutul primului caracter larg neconvertit.

wcsrtombs () Parametri

  • > dest: Pointer către matricea de caractere unde este stocat caracterul multibyte convertit.
  • src: Pointer to pointer to the first wide person to convert.
  • len: Numărul maxim de octeți disponibili în matricea dest.
  • ps: Pointer către obiectul stării de conversie.

wcsrtombs () Valoare returnată

  • La succes, funcția wcsrtombs () returnează numărul de caractere multibyte scrise la dest, excluzând caracterul nul care se termină larg, dar inclusiv secvențele de schimbare.
    Dacă dest este un pointer nul, acesta returnează numărul de caractere largi care ar fi fost scrise, cu excepția caracterului nul final.
  • La eroarea de conversie, -1 este returnat și errno este setat la EILSEQ .

Exemplu: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 Numărul de caractere multibyte scrise (cu excepția „ 0”) = 8 Caracter multibyte = ݣݗݿݟ

Articole interesante...