C ++ mbsrtowcs () - C ++ Standardbibliotek

Funktionen mbsrtowcs () i C ++ konverterer en smal multibyttegnsekvens til en bred tegnsekvens (af typen wchar_t).

Funktionen mbsrtowcs () er defineret i header-fil.

mbsrtowcs () prototype

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

Funktionen mbsrtowcs () konverterer multibyte-tegnstrengen, hvis første byte er repræsenteret af * src til tilsvarende bred karakterrepræsentation og er gemt i det brede tegnarray peget af dest. Der er maksimalt skrevet brede tegn til dest.

Konverteringsprocessen svarer til at ringe til mbrtowc () gentagne gange. Konverteringen stopper, hvis:

  • Et multibyte null-tegn blev konverteret og gemt. I dette tilfælde er src sat til null, og ps repræsenterer den oprindelige skifttilstand.
  • Der opstod et ugyldigt multibyttegn. I dette tilfælde er src indstillet til at pege begyndelsen på det første ukonverterede multibyttegn.
  • Len bred karakter er blevet gemt i dest. I dette tilfælde er src indstillet til at pege begyndelsen på det første ukonverterede multibyttegn.

mbsrtowcs () Parametre

  • dest: Markør til det array, hvor det konverterede brede tegn er gemt.
  • src: Markør for at markere til det første multibyttegn, der skal konverteres.
  • len: Maksimalt antal brede tegn at gemme.
  • ps: Markør til den konverteringstilstand, der bruges ved fortolkning af multibyte-strengen

mbsrtowcs () Returværdi

  • Efter succes returnerer funktionen mbsrtowcs () antallet af brede tegn, der er skrevet til dest, bortset fra det afsluttende brede null-tegn. Hvis dest er en nul pointer, returnerer det antallet af brede tegn, der ville være blevet skrevet i betragtning af ubegrænset længde.
  • Ved konverteringsfejl returneres -1, og errno er indstillet til EILSEQ .

Eksempel: Hvordan fungerer 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ører programmet, vil output være:

 Antallet af brede tegn skrevet (undtagen L " 0") = 4 Bredt tegn = ݣݗݿݟ

Interessante artikler...