C ++ wcsrtombs () - Standardna knjižnica C ++

Funkcija wcsrtombs () v jeziku C ++ pretvori široko zaporedje znakov v ozko večbajtno zaporedje znakov.

Funkcija wcsrtombs () je definirana v datoteki glave.

prototip wcsrtombs ()

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

Funkcija wcsrtombs () pretvori širok niz znakov, ki ga predstavlja * src, v ustrezen večbajtni niz znakov in je shranjen v matriki znakov, na katero kaže dest, če dest ni nična. V dest je zapisano največ len znakov.

Postopek pretvorbe je podoben večkratnemu klicanju wcrtomb (). Pretvorba se ustavi, če:

  • Širok ničelni znak je bil pretvorjen in shranjen. V tem primeru je src nastavljen na nič in ps predstavlja začetno stanje premika.
  • Prišlo je do neveljavnega širokega znaka. V tem primeru je src nastavljen tako, da kaže na začetek prvega ne pretvorjenega širokega znaka.
  • len bajtov je bilo shranjenih v dest. V tem primeru je src nastavljen tako, da kaže na začetek prvega ne pretvorjenega širokega znaka.

wcsrtombs () Parametri

  • > dest: Kazalec na niz znakov, kjer je shranjen pretvorjeni večbajtni znak.
  • src: Kazalec na kazalec na prvi široki znak za pretvorbo.
  • len: največje število bajtov, ki je na voljo v matriki ciljev.
  • ps: Kazalec na objekt stanja pretvorbe.

wcsrtombs () Vrnjena vrednost

  • Po uspehu funkcija wcsrtombs () vrne število večbajtnih znakov, zapisanih v destinacijo, razen končnega širokega ničelnega znaka, vendar vključuje zaporedja premikov.
    Če je dest ničelni kazalec, vrne število širokih znakov, ki bi bili napisani brez končnega ničelnega znaka.
  • Ob napaki pretvorbe se vrne -1 in errno se nastavi na EILSEQ .

Primer: Kako deluje funkcija 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; )

Ko zaženete program, bo rezultat:

 Število napisanih večbajtnih znakov (brez " 0") = 8 Večbajtnih znakov = ݣݗݿݟ

Zanimive Članki...