C ++ mbsrtowcs () - Biblioteca standard C ++

Funcția mbsrtowcs () din C ++ convertește o secvență îngustă de caractere multibyte într-o secvență largă de caractere (de tip wchar_t).

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

mbsrtowcs () prototip

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

Funcția mbsrtowcs () convertește șirul de caractere multibyte al cărui prim octet este reprezentat de * src în reprezentarea caracterelor largi corespunzătoare și este stocat în matricea largă de caractere indicată de dest. La dest. Sunt scrise maximum maximum caractere largi.

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

  • Un caracter nul multibyte 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 multibyte nevalid. În acest caz, src este setat să indice începutul primului caracter multibyte neconvertit.
  • caracterul larg a fost stocat în dest. În acest caz, src este setat să indice începutul primului caracter multibyte neconvertit.

mbsrtowcs () Parametri

  • dest: Pointer către matricea unde este stocat caracterul larg convertit.
  • src: Pointer to pointer to the first person multibyte to convert.
  • len: Număr maxim de caractere largi de stocat.
  • ps: Pointer către starea de conversie utilizată la interpretarea șirului multibyte

mbsrtowcs () Valoare returnată

  • La succes, funcția mbsrtowcs () returnează numărul de caractere largi scrise în dest, excluzând caracterul nul nul care termină Dacă dest este un pointer nul, acesta returnează numărul de caractere largi care ar fi fost scrise luând în considerare lungimea nelimitată.
  • La eroarea de conversie, -1 este returnat și errno este setat la EILSEQ .

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

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

 Numărul de caractere largi scrise (cu excepția L " 0") = 4 Caracter lat = ݣݗݿݟ

Articole interesante...