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

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

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

mbrtoc16 () prototips

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

Funkcija mbrtoc16 () pārveido ne vairāk kā n multibaitu rakstzīmi, ko apzīmē s, par līdzvērtīgu utf-16 rakstzīmi un saglabā to atmiņas vietā, uz kuru norāda pc16.

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

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

mbrtoc16 () parametri

  • pc16: rādītājs atmiņas vietā, lai saglabātu iegūto 16 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.

mbrtoc16 () Atgriešanās vērtība

Funkcija mbrtoc16 () 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ārveidotā par 16 bitu rakstzīmju daudzbaitu rakstzīmju baitu skaits (ne vairāk kā n).
  • -3, ja nākamais char16_tno multi-char16_t rakstzīmes (piem., Aizstājēja pāra) tagad ir rakstīts uz * pc16. Š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 * pc16.
  • -1, ja rodas kodēšanas kļūda. Šajā gadījumā nekas netiek rakstīts uz * pc16, errno ir iestatīts uz EILSEQ, un * ps vērtība nav norādīta.

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

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

Palaidot programmu, izeja būs:

 Daudzbaitu virkne = x Lengt> h = 1 16 bitu raksturs = 0x0078

Interesanti raksti...