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 destination destination 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 destination
max_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 mbrtowc
fungsi , 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk