C ++ mbsrtowcs () - C ++ Pustaka Standar

Fungsi mbsrtowcs () di C ++ mengubah urutan karakter multibyte sempit menjadi urutan karakter lebar (jenis wchar_t).

Fungsi mbsrtowcs () didefinisikan dalam file header.

mbsrtowcs () prototipe

 size_t mbsrtowcs (wchar_t * dest, const char ** src, size_t len, mbstate_t * ps);

Fungsi mbsrtowcs () mengonversi string karakter multibyte yang byte pertamanya diwakili oleh * src menjadi representasi karakter lebar yang sesuai dan disimpan dalam larik karakter lebar yang ditunjukkan oleh tujuan. Maksimum karakter lebar len ditulis ke tujuan.

Proses konversi ini mirip dengan memanggil mbrtowc () berulang kali. Konversi berhenti jika:

  • Karakter null multibyte telah diubah dan disimpan. Dalam kasus ini, src disetel ke null dan ps mewakili status perpindahan awal.
  • Ditemukan karakter multibyte yang tidak valid. Dalam kasus ini, src diatur untuk menunjukkan permulaan dari karakter multibyte pertama yang belum dikonversi.
  • karakter lebar len telah disimpan di tujuan. Dalam kasus ini, src diatur untuk menunjukkan permulaan dari karakter multibyte pertama yang belum dikonversi.

mbsrtowcs () Parameter

  • dest: Pointer ke larik di mana karakter lebar yang dikonversi disimpan.
  • src: Pointer untuk menunjuk ke karakter multibyte pertama yang akan diubah.
  • len: Karakter lebar angka maksimum untuk disimpan.
  • ps: Pointer ke status konversi yang digunakan saat menafsirkan string multibyte

mbsrtowcs () Nilai kembali

  • Jika berhasil, fungsi mbsrtowcs () mengembalikan jumlah karakter lebar yang ditulis ke tujuan tidak termasuk karakter null lebar yang mengakhiri. Jika dest adalah penunjuk nol, ia mengembalikan jumlah karakter lebar yang akan ditulis dengan mempertimbangkan panjang yang tidak terbatas.
  • Pada kesalahan konversi, -1 dikembalikan dan errno disetel ke EILSEQ .

Contoh: Bagaimana fungsi mbsrtowcs () bekerja?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const char* str = "u0763u0757u077fu075f"; wchar_t wstr(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = mbsrtowcs(wstr, &str, len, &ps); wcout << L"Number of wide characters written (excluding L "\0 ") = " << retVal << endl; wcout << L"Wide character = " << wstr << endl; return 0; )

Saat Anda menjalankan program, hasilnya adalah:

 Jumlah karakter lebar yang ditulis (tidak termasuk L " 0") = 4 Karakter lebar = ݣݗݿݟ

Artikel yang menarik...