Bagikan melalui


mbrtoc16, mbrtoc32

Menerjemahkan karakter multibyte UTF-8 pertama dalam string ke dalam karakter UTF-16 atau UTF-32 yang setara.

Sintaks

size_t mbrtoc16(
   char16_t* destination,
   const char* source,
   size_t max_bytes,
   mbstate_t* state
);

size_t mbrtoc32(
   char32_t* destination,
   const char* source,
   size_t max_bytes,
   mbstate_t* state
);

Parameter

destination
Penunjuk ke char16_t atau char32_t setara dengan karakter multibyte UTF-8 untuk dikonversi. Jika null, fungsi tidak menyimpan nilai.

source
Arahkan ke string karakter multibyte UTF-8 untuk dikonversi.

max_bytes
Jumlah maksimum byte di untuk memeriksa karakter yang akan dikonversi source . Argumen ini harus berupa nilai antara satu dan jumlah byte, termasuk terminator null apa pun, yang tersisa di source.

state
Penunjuk ke objek status konversi yang mbstate_t digunakan untuk menginterpretasikan string multibyte UTF-8 ke satu atau beberapa karakter output.

Nilai hasil

Setelah berhasil, mengembalikan nilai kondisi pertama dari kondisi ini yang berlaku, dengan nilai saat ini state :

Nilai Kondisi
0 Karakter berikutnya max_bytes atau lebih sedikit yang dikonversi dari source sesuai dengan karakter lebar null, yang merupakan nilai yang disimpan jika destination tidak null.

state berisi status shift awal.
Antara 1 dan max_bytes, inklusif Nilai yang dikembalikan adalah jumlah byte yang source menyelesaikan karakter multibyte yang valid. Karakter lebar yang dikonversi disimpan jika destination tidak null.
-3 Karakter lebar berikutnya yang dihasilkan dari panggilan sebelumnya ke fungsi telah disimpan jika destinationdestination tidak null. Tidak ada byte dari source yang dikonsumsi oleh panggilan ini ke fungsi.

Ketika source menunjuk ke karakter multibyte UTF-8 yang memerlukan lebih dari satu karakter lebar untuk diwakili (misalnya, pasangan pengganti), maka nilai diperbarui state sehingga panggilan fungsi berikutnya menulis karakter tambahan.
-2 Byte berikutnya max_bytes mewakili karakter multibyte UTF-8 yang tidak lengkap, tetapi berpotensi valid. Tidak ada nilai yang disimpan di destination. Hasil ini dapat terjadi jika max_bytes nol.
-1 Terjadi kesalahan pengodean. Byte berikutnya max_bytes atau lebih sedikit tidak berkontribusi pada karakter multibyte UTF-8 yang lengkap dan valid. Tidak ada nilai yang disimpan di destination.

EILSEQ disimpan dan errno nilai state status konversi tidak ditentukan.

Keterangan

Fungsi ini mbrtoc16 membaca hingga max_bytes byte dari source untuk menemukan karakter multibyte UTF-8 yang lengkap dan valid pertama, lalu menyimpan karakter UTF-16 yang setara di destination. Jika karakter memerlukan lebih dari satu karakter output UTF-16, seperti pasangan pengganti, maka state nilai diatur untuk menyimpan karakter UTF-16 berikutnya pada destination panggilan berikutnya ke mbrtoc16. Fungsi mbrtoc32 ini identik, tetapi output disimpan sebagai karakter UTF-32.

Jika source null, fungsi-fungsi ini mengembalikan yang setara dengan panggilan yang dibuat menggunakan argumen NULL untuk destination, "" (string kosong dan dihentikan null) untuk source, dan 1 untuk max_bytes. Nilai yang diteruskan dan destinationmax_bytes diabaikan.

Jika source tidak null, fungsi dimulai di awal string dan memeriksa hingga max_bytes byte untuk menentukan jumlah byte yang diperlukan untuk menyelesaikan karakter multibyte UTF-8 berikutnya, termasuk urutan shift apa pun. Jika byte yang diperiksa berisi karakter multibyte UTF-8 yang valid dan lengkap, fungsi akan mengonversi karakter menjadi karakter atau karakter lebar 16-bit atau 32-bit yang setara. Jika destination tidak null, fungsi menyimpan karakter hasil pertama (dan mungkin saja) di tujuan. Jika karakter output tambahan diperlukan, nilai diatur dalam state, sehingga panggilan berikutnya ke fungsi menghasilkan karakter tambahan dan mengembalikan nilai -3. Jika tidak ada lagi karakter output yang diperlukan, maka state diatur ke status shift awal.

Untuk mengonversi karakter multibyte non-UTF-8 ke karakter LE UTF-16, gunakan mbrtowcfungsi , mbtowc, atau _mbtowc_l .

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Function Header C Header C++
mbrtoc16, mbrtoc32 <uchar.h> <cuchar>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Konversi data
Lokal
Interpretasi urutan karakter multibyte
c16rtomb, c32rtomb
mbrtowc
mbsrtowcs
mbsrtowcs_s