Fungsi mbrtoc32 () di C ++ mengonversi karakter multibyte sempit menjadi representasi karakter 32 bit.
Fungsi mbrtoc32 () didefinisikan dalam file header.
mbrtoc32 () prototipe
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Fungsi mbrtoc32 () mengonversi paling banyak n karakter multibyte yang diwakili oleh s menjadi karakter utf-32 yang setara dan menyimpannya di lokasi memori yang ditunjukkan oleh pc32.
Jika s mewakili pointer nol, nilai dari n dan pc32 diabaikan dan panggilan ke sama dengan mbrtoc32(NULL, "", 1, ps)
.
Jika karakter yang dihasilkan adalah null, status konversi * ps mewakili status pergeseran awal.
mbrtoc32 () Parameter
- pc32: Arahkan ke lokasi memori untuk menyimpan karakter 32 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.
mbrtoc32 () Nilai kembali
Fungsi mbrtoc32 () mengembalikan nilai pertama berikut yang cocok dengan kasus di bawah ini:
- 0 jika karakter yang dikonversi adalah karakter nol.
- jumlah byte (paling banyak n) karakter multibyte yang berhasil dikonversi menjadi karakter 32 bit.
- -3 jika next
char32_t
dari karakter multi-char32_t (misalnya pasangan pengganti) sekarang telah ditulis ke * pc32. 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 * pc32.
- -1 jika terjadi kesalahan encoding. Dalam hal ini tidak ada yang ditulis ke * pc32, errno disetel ke EILSEQ dan nilai * ps tidak ditentukan.
Contoh: Bagaimana fungsi mbrtoc32 () bekerja?
#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; )
Saat Anda menjalankan program, hasilnya adalah:
String multibyte = x Panjang = 1 karakter 32-bit = 0x00000078