C ++ wcsrtombs () - C ++ Standardbibliotek

Funksjonen wcsrtombs () i C ++ konverterer en bred tegnsekvens til en smal multibytes tegnsekvens.

Funksjonen wcsrtombs () er definert i topptekstfilen.

wcsrtombs () prototype

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

Funksjonen wcsrtombs () konverterer den brede tegnstrengen representert med * src til tilsvarende flerstrengetegnstreng og lagres i tegnoppstillingen pekt av dest hvis dest ikke er null. Maksimalt len ​​tegn er skrevet til dest.

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

  • Et bredt nullkarakter ble konvertert og lagret. I dette tilfellet er src satt til null og ps representerer den opprinnelige skifttilstanden.
  • Det oppstod en ugyldig bred karakter. I dette tilfellet er src satt til å peke begynnelsen på det første ukonverterte brede tegnet.
  • len byte er lagret i dest. I dette tilfellet er src satt til å peke begynnelsen på det første ukonverterte brede tegnet.

wcsrtombs () Parametere

  • > dest: Peker til tegnmatrisen der det konverterte multibytetegnet er lagret.
  • src: Peker for å peke til det første brede tegnet som skal konverteres.
  • len: Maksimalt antall byte tilgjengelig i dest array.
  • ps: peker til konverteringstilstandsobjektet.

wcsrtombs () Returverdi

  • Når det lykkes, returnerer wcsrtombs () -funksjonen antall multibyte tegn som er skrevet til destinasjon unntatt det avsluttende brede nulltallet, men inkludert skiftesekvenser.
    Hvis dest er en nullpeker, returnerer det antallet brede tegn som ville blitt skrevet, unntatt det avsluttende nulltegnet.
  • Ved konverteringsfeil returneres -1 og errno er satt til EILSEQ .

Eksempel: Hvordan fungerer wcsrtombs ()?

 #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 kjører programmet, vil utdataene være:

 Antall skriftlige multibyttegn (unntatt " 0") = 8 Multibyttegn = ݣݗݿݟ

Interessante artikler...