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 = ݣݗݿݟ