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

Funkcija wcsrtombs () u C ++ pretvara široki niz znakova u uski višebajtni niz znakova.

Funkcija wcsrtombs () definirana je u zaglavnoj datoteci.

prototip wcsrtombs ()

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

Funkcija wcsrtombs () pretvara široki niz znakova predstavljen * src u odgovarajući višebajtni niz znakova i pohranjuje se u niz znakova na koji pokazuje dest ako dest nije null. U dest se upisuje najviše sljedećeg broja znakova:

Postupak pretvorbe sličan je pozivanju wcrtomb () uzastopno. Pretvorba se zaustavlja ako:

  • Široki null znak pretvoren je i pohranjen. U ovom slučaju, src je postavljen na nulu, a ps predstavlja početno stanje pomaka.
  • Nađen je nevažeći široki lik. U ovom je slučaju src postavljen tako da usmjerava na početak prvog nekonvertiranog širokog znaka.
  • len bajtovi pohranjeni su u dest. U ovom je slučaju src postavljen tako da usmjerava na početak prvog nekonvertiranog širokog znaka.

wcsrtombs () parametri

  • > dest: Pokazivač na niz znakova u kojem je pohranjeni pretvoreni višebajtni znak.
  • src: pokazivač na pokazivač na prvi široki znak koji treba pretvoriti.
  • len: Maksimalan broj bajtova dostupan u dest nizu.
  • ps: Pokazivač na objekt stanja pretvorbe.

wcsrtombs () Povratna vrijednost

  • Nakon uspjeha, funkcija wcsrtombs () vraća broj višebajtnih znakova zapisanih u destinaciju, isključujući završni široki null znak, ali uključujući nizove pomaka.
    Ako je dest null pokazivač, vraća broj širokih znakova koji bi bili napisani, isključujući završni null znak.
  • U slučaju pogreške pretvorbe, -1 se vraća, a errno se postavlja na EILSEQ .

Primjer: Kako funkcionira 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; )

Kada pokrenete program, izlaz će biti:

 Broj zapisanih višebajtnih znakova (isključujući " 0") = 8 Višebajtnih znakova = ݣݗݿݟ

Zanimljivi članci...