C ++ wcsrtombs () - C ++ standardraamatukogu

Funktsioon wcsrtombs () funktsioonis C ++ teisendab laia märgijada kitsaks mitmebaidiseks märgijärjestuseks.

Funktsioon wcsrtombs () on määratletud päisefailis.

wcsrtombs () prototüüp

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

Funktsioon wcsrtombs () teisendab laia märgistringi, mida tähistab * src, vastavaks mitmebaidiseks märgistringiks ja salvestatakse tähemassiivi, millele osutab dest, kui dest pole null. Destile kirjutatakse maksimaalselt len ​​tähemärki.

Teisendamisprotsess sarnaneb korduvalt wcrtomb () kutsumisega. Teisendamine peatub, kui:

  • Lai nullmärk teisendati ja salvestati. Sel juhul on src väärtuseks null ja ps tähistab esialgset nihkeolekut.
  • Ilmnes vale lai märk. Sel juhul on src määratud määrama esimese teisendamata laia märgi alguse.
  • len baidid on salvestatud sihtkohta. Sel juhul on src määratud määrama esimese teisendamata laia märgi alguse.

wcsrtombs () parameetrid

  • > dest: Märkide massiivi osuti, kuhu teisendatud mitmebaidine märk on salvestatud.
  • src: kursor osutab esimese teisendatava laia tähe juurde.
  • len: maksimaalne saadaolevate baitide arv sihtmaatriksis.
  • ps: kursor teisenduse oleku objektile.

wcsrtombs () Tagastusväärtus

  • Edu korral tagastab funktsioon wcsrtombs () lõpuni kirjutatud mitmebaidiste tähemärkide arvu, välja arvatud lõpetav lai nullmärk, kuid sisaldab nihkejärjestusi.
    Kui dest on nullkursor, tagastab see laia märkide arvu, mis oleks kirjutatud, välja arvatud lõppev nullmärk.
  • Teisendusvea korral tagastatakse -1 ja errno väärtuseks määratakse EILSEQ .

Näide: Kuidas funktsioon wcsrtombs () töötab?

 #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; )

Programmi käivitamisel on väljund järgmine:

 Kirjutatud mitmebaidiste märkide arv (välja arvatud " 0") = 8 Mitmebaidine märk = =

Huvitavad Artiklid...