C ++ wcsrtombs () - C ++ standartinė biblioteka

Funkcija wcsrtombs () C ++ paverčia plačią simbolių seką siaura daugiabačio simbolių seka.

Funkcija wcsrtombs () yra apibrėžta antraštės faile.

wcsrtombs () prototipas

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

Funkcija wcsrtombs () konvertuoja plačią simbolių eilutę, kurią vaizduoja * src, į atitinkamą kelių baitų simbolių eilutę ir saugoma simbolių masyve, kurį nurodo dest, jei dest nėra nulis. Daugiausia len simbolių rašoma į likimą.

Konversijos procesas yra panašus į pakartotinį wcrtomb () iškvietimą. Konversija sustabdoma, jei:

  • Platus nulinis simbolis buvo konvertuotas ir išsaugotas. Šiuo atveju src yra nustatytas į nulį, o ps reiškia pradinę poslinkio būseną.
  • Aptiktas netinkamas platus simbolis. Šiuo atveju „src“ nustatoma taip, kad jis nurodytų pirmojo nekonvertuoto plataus simbolio pradžią.
  • len baitai buvo saugomi pask. Šiuo atveju „src“ nustatoma taip, kad jis nurodytų pirmojo nekonvertuoto plataus simbolio pradžią.

wcsrtombs () parametrai

  • > dest: žymeklis į simbolių masyvą, kuriame saugomas konvertuotas daugiabaitis simbolis.
  • src: žymeklis, nukreipiantis į pirmą platų simbolį, kurį reikia konvertuoti.
  • len: maksimalus galimų baitų skaičius „arr array“.
  • ps: žymeklis į konversijos būsenos objektą.

wcsrtombs () Grąžinimo vertė

  • Pasisekus, funkcija wcsrtombs () pateikia daugiabaitių simbolių, parašytų iki pabaigos, skaičių, išskyrus baigiantį platų nulinį simbolį, bet įtraukiant poslinkio sekas.
    Jei dest yra nulinis žymeklis, jis pateikia plačių simbolių, kurie būtų parašyti, išskyrus baigiamąjį nulinį simbolį, skaičių.
  • Esant konversijos klaidai, grąžinama -1 ir klaida nustatoma kaip EILSEQ .

Pavyzdys: Kaip veikia wcsrtombs () funkcija?

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

Kai paleisite programą, išvestis bus:

 Parašytų daugiabačių simbolių skaičius (išskyrus „ 0“) = 8 Daugiabačių simbolių = ݣݗݿݟ

Įdomios straipsniai...