C ++ wcsrtombs () - C ++ Standardbibliotek

Funktionen wcsrtombs () i C ++ konverterar en bred karaktärsekvens till en smal multibytkaraktärsekvens.

Funktionen wcsrtombs () definieras i rubrikfilen.

wcsrtombs () prototyp

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

Funktionen wcsrtombs () konverterar den breda teckensträngen som representeras av * src till motsvarande multibyte-teckensträng och lagras i teckenuppsättningen pekad av dest om dest inte är null. Högst len ​​tecken skrivs till dest.

Konverteringsprocessen liknar att ringa wcrtomb () upprepade gånger. Konverteringen stoppar om:

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

wcsrtombs () Parametrar

  • > dest: Pekare till teckenuppsättningen där det konverterade multibytkaraktären lagras.
  • src: Pekare för att peka på det första breda tecknet som ska konverteras.
  • len: Maximalt antal byte tillgängliga i dest array.
  • ps: Pekare till konverteringsstatusobjektet.

wcsrtombs () Returvärde

  • Vid framgång returnerar funktionen wcsrtombs () antalet multibyt-tecken som är skrivna till dest exklusive det avslutande breda nulltecknet men inklusive skiftningssekvenser.
    Om dest är en nollpekare returnerar det antalet breda tecken som skulle ha skrivits exklusive det avslutande nollkaraktären.
  • Vid konverteringsfel returneras -1 och errno ställs in på EILSEQ .

Exempel: Hur fungerar wcsrtombs () -funktionen?

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

När du kör programmet blir resultatet:

 Antal skrivna multibyt-tecken (exklusive " 0") = 8 Multibyt-tecken = ݣݗݿݟ

Intressanta artiklar...