Funktionen wcsrtombs () i C ++ konverterer en bred tegnsekvens til en smal multibyt-tegnsekvens.
Funktionen wcsrtombs () er defineret i headerfilen.
wcsrtombs () prototype
size_t wcsrtombs (char * dest, const wchar_t ** src, size_t len, mbstate_t * ps);
Funktionen wcsrtombs () konverterer den brede tegnstreng repræsenteret af * src til den tilsvarende multibyte tegnstreng og er gemt i det tegnarray, der peges af dest, hvis dest ikke er nul. Højst len tegn er skrevet til dest.
Konverteringsprocessen svarer til at ringe til wcrtomb () gentagne gange. Konverteringen stopper, hvis:
- En bred null karakter blev konverteret og gemt. I dette tilfælde er src sat til null, og ps repræsenterer den oprindelige skifttilstand.
- Der blev fundet en ugyldig bred karakter. I dette tilfælde er src indstillet til at pege begyndelsen på det første ukonverterede brede tegn.
- len bytes er blevet gemt i dest. I dette tilfælde er src indstillet til at pege begyndelsen på det første ukonverterede brede tegn.
wcsrtombs () Parametre
- > dest: Markør til tegnarrayet, hvor det konverterede multibyttegn er gemt.
- src: Markør til markør til det første brede tegn, der skal konverteres.
- len: Maksimalt antal tilgængelige byte i dest array.
- ps: Markør til objektet for konverteringstilstand.
wcsrtombs () Returværdi
- Efter succes returnerer funktionen wcsrtombs () antallet af multibyttegn, der er skrevet til dest, bortset fra det afsluttende brede null-tegn, men inklusive skiftesekvenser.
Hvis dest er en nul pointer, returnerer det antallet af brede tegn, der ville være skrevet eksklusive det afsluttende nul tegn. - Ved konverteringsfejl returneres -1, og errno er indstillet 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 kører programmet, vil output være:
Antal skrevne multibyttegn (undtagen " 0") = 8 Multibyttegn = ݣݗݿݟ