C ++ mbsrtowcs () - C ++ standaardbibliotheek

De functie mbsrtowcs () in C ++ converteert een smalle multibyte-tekenreeks naar een brede tekenreeks (van het type wchar_t).

De functie mbsrtowcs () is gedefinieerd in het headerbestand.

mbsrtowcs () prototype

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

De functie mbsrtowcs () converteert de multibyte-tekenreeks waarvan de eerste byte wordt weergegeven door * src naar de corresponderende brede tekenweergave en wordt opgeslagen in de brede tekenreeks waarnaar wordt verwezen door dest. Er worden maximaal len brede tekens naar de bestemming geschreven.

Het conversieproces is vergelijkbaar met het herhaaldelijk aanroepen van mbrtowc (). De conversie stopt als:

  • Een multibyte null-teken is geconverteerd en opgeslagen. In dit geval wordt src ingesteld op null en staat ps voor de initiële schakelstatus.
  • Er is een ongeldig multibyte-teken aangetroffen. In dit geval wordt src zo ingesteld dat het naar het begin van het eerste niet-geconverteerde multibyte-teken wijst.
  • len wide character is opgeslagen in dest. In dit geval wordt src zo ingesteld dat het naar het begin van het eerste niet-geconverteerde multibyte-teken wijst.

mbsrtowcs () Parameters

  • dest: Pointer naar de array waar het geconverteerde brede teken is opgeslagen.
  • src: pointer naar pointer naar het eerste multibyte-teken dat moet worden geconverteerd.
  • len: maximaal aantal brede tekens om op te slaan.
  • ps: Pointer naar de conversiestatus die wordt gebruikt bij het interpreteren van de multibyte-reeks

mbsrtowcs () Retourwaarde

  • Bij succes retourneert de functie mbsrtowcs () het aantal brede tekens dat naar dest is geschreven, met uitzondering van het terminerende brede nul-teken. Als dest een null-pointer is, retourneert het het aantal brede tekens dat zou zijn geschreven gezien de onbeperkte lengte.
  • Bij een conversiefout wordt -1 geretourneerd en wordt errno ingesteld op EILSEQ .

Voorbeeld: hoe werkt de functie 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Aantal geschreven brede tekens (exclusief L " 0") = 4 Brede tekens = ݣݗݿݟ

Interessante artikelen...