C ++ mbrtoc16 () - C ++ Pustaka Standar

Fungsi mbrtoc16 () di C ++ mengonversi karakter multibyte sempit menjadi representasi karakter 16 bit.

Fungsi mbrtoc16 () didefinisikan dalam file header.

mbrtoc16 () prototipe

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

Fungsi mbrtoc16 () mengonversi paling banyak n karakter multibyte yang diwakili oleh s menjadi karakter utf-16 yang setara dan menyimpannya di lokasi memori yang ditunjukkan oleh pc16.

Jika s mewakili pointer nol, nilai dari n dan pc16 diabaikan dan pemanggilan ke setara dengan mbrtoc16 (NULL, "", 1, ps).

Jika karakter yang dihasilkan adalah null, status konversi * ps mewakili status pergeseran awal.

mbrtoc16 () Parameter

  • pc16: Arahkan ke lokasi memori untuk menyimpan karakter 16 bit yang dihasilkan.
  • s: Penunjuk ke karakter multibyte yang akan diubah.
  • n: Jumlah byte maksimum untuk dikonversi.
  • ps: Penunjuk ke objek mbstate_t yang digunakan saat menafsirkan string multibyte.

mbrtoc16 () Nilai kembali

Fungsi mbrtoc16 () mengembalikan nilai pertama berikut yang cocok dengan kasus di bawah ini:

  • 0 jika karakter yang dikonversi adalah karakter nol.
  • jumlah byte (paling banyak n) dari karakter multibyte yang berhasil diubah menjadi karakter 16 bit.
  • -3 jika next char16_tdari karakter multi-char16_t (misalnya pasangan pengganti) sekarang telah ditulis ke * pc16. Dalam kasus ini, tidak ada byte yang diproses dari input.
  • -2 jika n byte berikutnya merupakan karakter multibyte yang tidak lengkap, tetapi sejauh ini valid. Dalam hal ini tidak ada yang ditulis ke * pc16.
  • -1 jika terjadi kesalahan encoding. Dalam hal ini tidak ada yang ditulis ke * pc16, errno disetel ke EILSEQ dan nilai * ps tidak ditentukan.

Contoh: Bagaimana fungsi mbrtoc16 () bekerja?

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

Saat Anda menjalankan program, hasilnya adalah:

 String multibita = x Panjang> h = 1 karakter 16-bit = 0x0078

Artikel yang menarik...