C ++ wcsrtombs () - C ++ standarta bibliotēka

Funkcija wcsrtombs () C ++ pārveido plašu rakstzīmju secību šaurā daudzbaitu rakstzīmju secībā.

Funkcija wcsrtombs () ir definēta galvenes failā.

wcsrtombs () prototips

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

Funkcija wcsrtombs () pārvērš plašo rakstzīmju virkni, ko apzīmē * src, par atbilstošu daudzbaitu rakstzīmju virkni un tiek saglabāta rakstzīmju masīvā, uz kuru norāda dest, ja dest nav nulles. Līdz galam tiek rakstīts maksimums len rakstzīmju.

Pārveidošanas process ir līdzīgs tam, kā atkārtoti izsaukt wcrtomb (). Reklāmguvums tiek pārtraukts, ja:

  • Tika pārveidots un saglabāts plašs nulles raksturs. Šajā gadījumā src ir iestatīts uz nulli un ps apzīmē sākotnējo nobīdes stāvokli.
  • Tika atrasts nederīgs plašs raksturs. Šajā gadījumā src ir iestatīts norādīt uz pirmā nepārvērstā plašā rakstzīmes sākumu.
  • len baiti ir saglabāti adresē. Šajā gadījumā src ir iestatīts norādīt uz pirmā nepārvērstā plašā rakstzīmes sākumu.

wcsrtombs () parametri

  • > dest: Rakstzīmju masīva rādītājs, kurā tiek glabāts konvertētais daudzbaitu raksturs.
  • src: rādītājs, lai norādītu uz pirmo plašo rakstzīmi, kas jāpārvērš.
  • len: maksimālais pieejamo baitu skaits masīvā.
  • ps: rādītājs konversijas stāvokļa objektam.

wcsrtombs () Atgriežamā vērtība

  • Pēc panākumiem funkcija wcsrtombs () atgriež līdz galam rakstīto daudzbaitu rakstzīmju skaitu, izņemot beigu plašo nulles rakstzīmi, bet ieskaitot nobīdes secības.
    Ja dest ir nulles rādītājs, tas atgriež rakstīto plašo rakstzīmju skaitu, izņemot beigu nulles rakstzīmi.
  • Konversijas kļūdas gadījumā tiek atgriezta -1, un kļūdas iestatījums ir EILSEQ .

Piemērs: Kā darbojas funkcija 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; )

Palaidot programmu, izeja būs:

 Rakstīto daudzbaitu rakstzīmju skaits (izņemot “ 0”) = 8 Daudzbaitu rakstzīme = ݣݗݿݟ

Interesanti raksti...