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

Funkcija mbrtoc32 () C ++ pārveido šauru daudzbaitu rakstzīmi par 32 bitu rakstzīmju attēlojumu.

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

mbrtoc32 () prototips

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

Funkcija mbrtoc32 () pārveido ne vairāk kā n multibaitu rakstzīmi, ko apzīmē s, par ekvivalentu utf-32 rakstzīmi un saglabā to atmiņas vietā, uz kuru norāda pc32.

Ja s apzīmē nulles rādītāju, n un pc32 vērtības tiek ignorētas, un izsaukums uz ir ekvivalents mbrtoc32(NULL, "", 1, ps).

Ja iegūtais rakstzīme ir nulle, konversijas stāvoklis * ps apzīmē sākotnējo nobīdes stāvokli.

mbrtoc32 () parametri

  • pc32: rādītājs uz atmiņas vietu, lai saglabātu iegūto 32 bitu rakstzīmi.
  • s: rādītājs, lai pārveidotu daudzbaitu rakstzīmi.
  • n: maksimālais konvertējamo baitu skaits s.
  • ps: rādītājs objektam mbstate_t, ko izmanto, interpretējot daudzbaitu virkni.

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

Funkcija mbrtoc32 () atgriež pirmo no šīm vērtībām, kas atbilst tālāk minētajiem gadījumiem:

  • 0, ja konvertētais raksturs ir nulles raksturs.
  • veiksmīgi pārvērstā 32 bitu rakstā daudzbaitu rakstzīmju baitu skaits (ne vairāk kā n).
  • -3, ja nākamais char32_tno multi-char32_t rakstzīmes (piem., Aizstājēja pāra) tagad ir rakstīts uz * pc32. Šajā gadījumā no ievades netiek apstrādāti neviens baits.
  • -2, ja nākamie n baiti veido nepilnīgu, bet līdz šim derīgu daudzbaitu rakstzīmi. Šajā gadījumā nekas netiek rakstīts uz * pc32.
  • -1, ja rodas kodēšanas kļūda. Šajā gadījumā nekas netiek rakstīts uz * pc32, errno ir iestatīts uz EILSEQ, un * ps vērtība nav norādīta.

Piemērs: Kā darbojas funkcija mbrtoc32 ()?

 #include #include #include #include using namespace std; int main(void) ( char32_t pc32; char s() = "x" ; mbstate_t ps; int length; length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc32() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("32-bit character = 0x%08hx", pc32); return 0; )

Palaidot programmu, izeja būs:

 Daudzbaitu virkne = x Garums = 1 32 bitu raksturs = 0x00000078

Interesanti raksti...