C ++ wcsrtombs () - C ++ Standardbibliotek

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

Interessante artikler...