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

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

Funkcija mbsrtowcs () je definirana v datoteki glave.

prototip mbsrtowcs ()

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

Funkcija mbsrtowcs () pretvori večbajtni znakovni niz, katerega prvi bajt je predstavljen z * src, v ustrezno široko predstavitev znakov in je shranjena v širokem polju znakov, na katerega kaže dest. V dest je zapisano največ len širokih znakov.

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

  • Pretvorjen in shranjen je bil večbajtni ničelni znak. V tem primeru je src nastavljen na nič in ps predstavlja začetno stanje premika.
  • Prišlo je do neveljavnega večbajtnega znaka. V tem primeru je src nastavljen tako, da kaže na začetek prvega pretvorjenega večbajtnega znaka.
  • len širok znak je bil shranjen v dest. V tem primeru je src nastavljen tako, da kaže na začetek prvega pretvorjenega večbajtnega znaka.

mbsrtowcs () Parametri

  • dest: Kazalec na matriko, v kateri je shranjen pretvorjeni široki znak.
  • src: Kazalec na kazalec na prvi večbajtni znak, ki ga želite pretvoriti.
  • len: Največje število znakov za shranjevanje.
  • ps: Kazalec na stanje pretvorbe, ki se uporablja pri interpretaciji večbajtnega niza

mbsrtowcs () Vrnjena vrednost

  • Po uspehu funkcija mbsrtowcs () vrne število širokih znakov, zapisanih v dest, brez zaključnega širokega ničelnega znaka. Če je dest ničelni kazalec, vrne število širokih znakov, ki bi bili napisani glede na neomejeno dolžino.
  • Ob napaki pretvorbe se vrne -1 in errno se nastavi na EILSEQ .

Primer: Kako deluje funkcija mbsrtowcs ()?

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

Ko zaženete program, bo rezultat:

 Število napisanih širokih znakov (brez L " 0") = 4 Široki znak = ݣݗݿݟ

Zanimive Članki...