C ++ mbsrtowcs () - C ++ Standardbibliotek

Funksjonen mbsrtowcs () i C ++ konverterer en smal multibyte tegnsekvens til en bred tegnsekvens (av typen wchar_t).

Funksjonen mbsrtowcs () er definert i topptekstfilen.

mbsrtowcs () prototype

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

Funksjonen mbsrtowcs () konverterer multibyte-tegnstrengen hvis første byte er representert av * src til tilsvarende bred tegnrepresentasjon og er lagret i det brede tegnoppstillingen pekt av dest. Maksimalt len ​​brede tegn er skrevet til dest.

Konverteringsprosessen ligner på å ringe mbrtowc () gjentatte ganger. Konverteringen stopper hvis:

  • Et null-tegn med flere bytter ble konvertert og lagret. I dette tilfellet er src satt til null og ps representerer den opprinnelige skifttilstanden.
  • Det oppsto et ugyldig multibyttegn. I dette tilfellet er src satt til å peke begynnelsen på det første ukonverterte multibyttegnet.
  • Len bred karakter har blitt lagret i dest. I dette tilfellet er src satt til å peke begynnelsen på det første ukonverterte multibyttegnet.

mbsrtowcs () Parametere

  • dest: Peker til matrisen der det konverterte brede tegnet er lagret.
  • src: Peker for å peke til det første multibytegn som konverteres.
  • len: Maksimalt antall tegn som skal lagres.
  • ps: peker til konverteringstilstanden som brukes når du tolker multibytestrengen

mbsrtowcs () Returverdi

  • Når det lykkes, returnerer funksjonen mbsrtowcs () antall brede tegn skrevet til destinasjon unntatt det avsluttende brede nulltegnet. Hvis dest er en nullpeker, returnerer det antallet brede tegn som ville blitt skrevet med tanke på ubegrenset lengde.
  • Ved konverteringsfeil returneres -1 og errno er satt til EILSEQ .

Eksempel: Hvordan fungerer 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; )

Når du kjører programmet, vil utdataene være:

 Antall brede tegn skrevet (unntatt L " 0") = 4 Bredt tegn = ݣݗݿݟ

Interessante artikler...