Fungsi mbrtoc32 () dalam C ++ menukar watak multibait sempit ke perwakilan watak 32 bit.
Fungsi mbrtoc32 () ditentukan dalam fail tajuk.
prototaip mbrtoc32 ()
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Fungsi mbrtoc32 () menukar paling banyak watak multibait yang diwakili oleh s kepada watak utf-32 yang setara dan menyimpannya di lokasi memori yang ditunjukkan oleh pc32.
Sekiranya s mewakili penunjuk nol, nilai n dan pc32 diabaikan dan panggilan ke setara dengan mbrtoc32(NULL, "", 1, ps)
.
Sekiranya watak yang dihasilkan dihasilkan adalah nol, keadaan penukaran * ps mewakili keadaan peralihan awal.
mbrtoc32 () Parameter
- pc32: Penunjuk ke lokasi memori untuk menyimpan watak 32 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.
mbrtoc32 () Nilai pulangan
Fungsi mbrtoc32 () 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 32 bit.
- -3 jika yang berikutnya
char32_t
dari watak multi-char32_t (contohnya pasangan pengganti) kini telah ditulis ke * pc32. 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 ke * pc32.
- -1 sekiranya berlaku kesalahan pengekodan. Dalam kes ini tidak ada yang ditulis ke * pc32, errno ditetapkan ke EILSEQ dan nilai * ps tidak ditentukan.
Contoh: Bagaimana fungsi mbrtoc32 () berfungsi?
#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; )
Semasa anda menjalankan program, outputnya adalah:
Rentetan multibait = x Panjang = 1 aksara 32-bit = 0x00000078