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

Funkcija mbsrtowcs () C ++ pārveido šauru daudzbaitu rakstzīmju secību plašā rakstzīmju secībā (tipa wchar_t).

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

mbsrtowcs () prototips

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

Funkcija mbsrtowcs () pārveido daudzbaitu rakstzīmju virkni, kuras pirmo baitu attēlo * src, uz atbilstošu plašu rakstzīmju attēlojumu un tiek glabāta plašajā rakstzīmju masīvā, uz kuru norāda dest. Galamērķim tiek rakstīts ne vairāk kā len plats rakstzīmes.

Pārveidošanas process ir līdzīgs mbrtowc () atkārtotai izsaukšanai. Reklāmguvums tiek pārtraukts, ja:

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

mbsrtowcs () Parametri

  • dest: rādītājs masīvam, kurā tiek glabāts konvertētais platais raksturs.
  • src: rādītājs, lai norādītu uz pirmo daudzbaitu rakstzīmi, kas jāpārvērš.
  • len: Maksimālais glabāšanai paredzētais rakstzīmju skaits.
  • ps: rādītājs konversijas stāvoklī, ko izmanto, interpretējot daudzbaitu virkni

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

  • Veiksmīgi funkcija mbsrtowcs () atgriež līdz galam rakstīto plato rakstzīmju skaitu, izņemot beigu plašo nulles rakstzīmi. Ja dest ir nulles rādītājs, tas atgriež plašo rakstzīmju skaitu, kas būtu rakstīts, ņemot vērā neierobežotu garumu.
  • Konversijas kļūdas gadījumā tiek atgriezta -1, un kļūdas iestatījums ir EILSEQ .

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

Palaidot programmu, izeja būs:

 Rakstīto plašo rakstzīmju skaits (izņemot L " 0") = 4 Plaša rakstzīme = ݣݗݿݟ

Interesanti raksti...