C ++ mbrtoc16 () - Perpustakaan Standard C ++

Fungsi mbrtoc16 () dalam C ++ menukar watak multibait sempit menjadi perwakilan watak 16 bit.

Fungsi mbrtoc16 () didefinisikan dalam fail tajuk.

prototaip mbrtoc16 ()

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

Fungsi mbrtoc16 () menukar paling banyak watak multibait yang diwakili oleh s kepada watak utf-16 yang setara dan menyimpannya di lokasi memori yang ditunjukkan oleh pc16.

Sekiranya s mewakili penunjuk nol, nilai n dan pc16 diabaikan dan panggilan ke setara dengan mbrtoc16 (NULL, "", 1, ps).

Sekiranya watak yang dihasilkan dihasilkan adalah nol, keadaan penukaran * ps mewakili keadaan peralihan awal.

mbrtoc16 () Parameter

  • pc16: Penunjuk ke lokasi memori untuk menyimpan watak 16 bit yang dihasilkan.
  • s: Penunjuk kepada watak multibait untuk ditukarkan.
  • n: Bilangan maksimum bait dalam s untuk ditukar.
  • ps: Penunjuk ke objek mbstate_t yang digunakan semasa menafsirkan rentetan multibait.

mbrtoc16 () Nilai pulangan

Fungsi mbrtoc16 () mengembalikan nilai pertama dari nilai berikut yang sepadan dengan kes di bawah:

  • 0 jika watak yang ditukar adalah watak kosong.
  • bilangan bait (paling banyak n) watak multibait yang berjaya ditukar menjadi watak 16 bit.
  • -3 jika yang berikutnya char16_tdari watak multi-char16_t (contohnya pasangan pengganti) kini telah ditulis ke * pc16. Tiada bait diproses dari input dalam kes ini.
  • -2 jika n bait seterusnya merupakan watak multibait yang tidak lengkap, tetapi setakat ini sah. Dalam kes ini tidak ada yang ditulis kepada * pc16.
  • -1 sekiranya berlaku kesalahan pengekodan. Dalam kes ini tidak ada yang ditulis ke * pc16, errno ditetapkan ke EILSEQ dan nilai * ps tidak ditentukan.

Contoh: Bagaimana fungsi mbrtoc16 () berfungsi?

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

Semasa anda menjalankan program, outputnya adalah:

 Rentetan multibait = x Panjang> h = 1 aksara 16-bit = 0x0078

Artikel menarik...