C ++ mbsrtowcs () - štandardná knižnica C ++

Funkcia mbsrtowcs () v C ++ prevádza úzku viacbajtovú postupnosť znakov na širokú postupnosť znakov (typu wchar_t).

Funkcia mbsrtowcs () je definovaná v hlavičkovom súbore.

mbsrtowcs () prototyp

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

Funkcia mbsrtowcs () prevádza reťazec viacbajtových znakov, ktorého prvý bajt je reprezentovaný znakom * src na zodpovedajúcu reprezentáciu širokých znakov a je uložený v poli širokých znakov, na ktoré ukazuje cieľ. Maximálne len široké znaky sú zapísané do cieľa.

Proces premeny je podobný opakovanému volaniu mbrtowc (). Konverzia sa zastaví, ak:

  • Viacbajtový nulový znak bol prevedený a uložený. V tomto prípade je src nastavený na hodnotu null a ps predstavuje stav počiatočného posunu.
  • Vyskytol sa neplatný viacbajtový znak. V tomto prípade je src nastavené tak, aby ukazovalo na začiatok prvého nekonvertovaného viacbajtového znaku.
  • len široký znak bol uložený v cieľ. V tomto prípade je src nastavený tak, aby ukazovala na začiatok prvého nekonvertovaného viacbajtového znaku.

mbsrtowcs () parametre

  • cieľ: Ukazovateľ na pole, kde je uložený prevedený široký znak.
  • src: Ukazovateľ na ukazovateľ na prvý viacbajtový znak, ktorý sa má previesť.
  • len: Maximálny počet širokých znakov na uloženie.
  • ps: Ukazovateľ na stav konverzie použitý pri interpretácii viacbytového reťazca

mbsrtowcs () Vrátená hodnota

  • Pri úspechu funkcia mbsrtowcs () vráti počet zapísaných širokých znakov na cieľ s výnimkou ukončovacieho širokého nulového znaku. Ak je dest nulový ukazovateľ, vráti počet širokých znakov, ktoré by boli napísané vzhľadom na neobmedzenú dĺžku.
  • Pri chybe konverzie sa vráti -1 a errno je nastavené na EILSEQ .

Príklad: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Počet napísaných širokých znakov (okrem L " 0") = 4 Široký znak = ݣݗݿݟ

Zaujímavé články...