C ++ mbsrtowcs () - C ++ Standardbibliotek

Funktionen mbsrtowcs () i C ++ konverterar en smal multibyt-teckensekvens till en bred teckensekvens (av typen wchar_t).

Funktionen mbsrtowcs () definieras i rubrikfilen.

mbsrtowcs () prototyp

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

Funktionen mbsrtowcs () konverterar multibyte-teckensträngen vars första byte representeras av * src till motsvarande bred teckenrepresentation och lagras i den breda teckenuppsättningen som dest. Högst len ​​breda tecken skrivs till dest.

Omvandlingsprocessen liknar att ringa mbrtowc () upprepade gånger. Konverteringen stoppar om:

  • En null-karaktär med flera bitar konverterades och lagrades. I det här fallet är src satt till null och ps representerar initialt skiftläge.
  • En ogiltig multibytkaraktär påträffades. I det här fallet är src inställd på att peka början på det första okonverterade multibytetecknet.
  • len bred karaktär har lagrats i dest. I det här fallet är src inställd på att peka början på det första okonverterade multibytetecknet.

mbsrtowcs () Parametrar

  • dest: Pekare till matrisen där det konverterade breda tecknet lagras.
  • src: Pekare för att peka på det första multibytetecknet som ska konverteras.
  • len: Maximalt antal breda tecken att lagra.
  • ps: Pekare till konverteringstillståndet som används vid tolkning av multibytsträngen

mbsrtowcs () Returvärde

  • Vid framgång returnerar funktionen mbsrtowcs () antalet breda tecken skrivna till dest exklusive det avslutande breda nulltecknet. Om dest är en nollpekare returnerar det antalet breda tecken som skulle ha skrivits med tanke på obegränsad längd.
  • Vid konverteringsfel returneras -1 och errno ställs in på EILSEQ .

Exempel: Hur fungerar mbsrtowcs () -funktionen?

 #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; )

När du kör programmet blir resultatet:

 Antal breda tecken skrivna (exklusive L " 0") = 4 Brett tecken = ݣݗݿݟ

Intressanta artiklar...