C ++ mbsrtowcs () - C ++ standardraamatukogu

Funktsioon mbsrtowcs () funktsioonis C ++ teisendab kitsa mitmebaidise tähemärkide järjestuse laiaks tähemärkide jadaks (tüüpi wchar_t).

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

mbsrtowcs () prototüüp

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

Funktsioon mbsrtowcs () teisendab mitmebaidise märgistringi, mille esimest baiti tähistab * src, vastavaks laia tähemärgi esituseks ja see on salvestatud laiasse tähemärkide massiivi, millele osutab dest. Destile kirjutatakse maksimaalselt len ​​laia tähemärki.

Teisendamisprotsess sarnaneb mbrtowc () korduva kutsumisega. Teisendamine peatub, kui:

  • Teisendati ja salvestati mitmebaidine nullmärk. Sel juhul on src väärtuseks null ja ps tähistab esialgset nihkeolekut.
  • Ilmnes vale mitmebaidine märk. Sel juhul on src seatud osutama esimese teisendamata mitmebaidise märgi alguseks.
  • len laia iseloomu on salvestatud dest. Sel juhul on src seatud osutama esimese teisendamata mitmebaidise märgi alguseks.

mbsrtowcs () parameetrid

  • dest: Kursor massiivile, kuhu teisendatud lai märk on salvestatud.
  • src: kursor kursoriks esimese teisendatava mitmebaidise tähemärgi poole.
  • len: maksimaalne arv laia tähemärki salvestamiseks.
  • ps: kursor teisenduse olekusse, mida kasutatakse mitmebaidise stringi tõlgendamisel

mbsrtowcs () Tagastusväärtus

  • Edu korral tagastab funktsioon mbsrtowcs () lõpuni kirjutatud laiade märkide arvu, välja arvatud lõppev lai nullmärk. Kui dest on nullkursor, tagastab see nende laiade märkide arvu, mis oleks kirjutatud piiramatut pikkust arvestades.
  • Teisendusvea korral tagastatakse -1 ja errno väärtuseks määratakse EILSEQ .

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

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

 Kirjutatud laiade märkide arv (välja arvatud L " 0") = 4 Lai märk = ݣݗݿݟ

Huvitavad Artiklid...