C ++ wcsrtombs () - standardní knihovna C ++

Funkce wcsrtombs () v C ++ převádí sekvenci širokých znaků na sekvenci úzkých vícebajtových znaků.

Funkce wcsrtombs () je definována v hlavičkovém souboru.

prototyp wcsrtombs ()

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

Funkce wcsrtombs () převádí řetězec širokých znaků představovaný * src na odpovídající řetězec vícebajtových znaků a je uložen v poli znaků, na které ukazuje dest, pokud dest není null. Do cíle se zapíše maximálně znaků len.

Proces převodu je podobný opakovanému volání wcrtomb (). Převod se zastaví, pokud:

  • Byl převeden a uložen široký prázdný znak. V tomto případě je src nastaveno na null a ps představuje počáteční stav posunu.
  • Byl zjištěn neplatný široký znak. V tomto případě je src nastaven tak, aby ukazoval na začátek prvního nepřevedeného širokého znaku.
  • jen bajty byly uloženy v cílové V tomto případě je src nastaven tak, aby ukazoval na začátek prvního nepřevedeného širokého znaku.

wcsrtombs () Parametry

  • > dest: Ukazatel na pole znaků, kde je uložen převedený vícebajtový znak.
  • src: Ukazatel na ukazatel na první široký znak, který se má převést.
  • len: Maximální počet bajtů k dispozici v cílovém poli.
  • ps: Ukazatel na objekt stavu převodu.

wcsrtombs () Vrátí hodnotu

  • Při úspěchu funkce wcsrtombs () vrací počet vícebajtových znaků zapsaných do cíle s výjimkou ukončujícího širokého znaku null, ale včetně posuvu.
    Pokud je dest nulový ukazatel, vrátí počet širokých znaků, které by byly zapsány, kromě ukončujícího nulového znaku.
  • Při chybě převodu se vrátí -1 a errno je nastaveno na EILSEQ .

Příklad: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 Počet zapsaných vícebajtových znaků (kromě „ 0“) = 8 Vícebajtový znak = ݣݗݿݟ

Zajímavé články...