C ++ wcsrtombs () - C ++ Pustaka Standar

Fungsi wcsrtombs () di C ++ mengonversi urutan karakter lebar menjadi urutan karakter multibyte yang sempit.

Fungsi wcsrtombs () didefinisikan dalam file header.

wcsrtombs () prototipe

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

Fungsi wcsrtombs () mengonversi string karakter lebar yang diwakili oleh * src menjadi string karakter multibyte yang sesuai dan disimpan dalam larik karakter yang ditunjukkan oleh dest jika dest bukan null. Maksimum karakter len ditulis ke tujuan.

Proses konversinya mirip dengan memanggil wcrtomb () berulang kali. Konversi berhenti jika:

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

wcsrtombs () Parameter

  • > tujuan: Penunjuk ke larik karakter tempat penyimpanan karakter multibyte yang telah dikonversi.
  • src: Penunjuk untuk menunjuk ke karakter lebar pertama yang akan diubah.
  • len: Jumlah byte maksimum yang tersedia dalam larik tujuan.
  • ps: Pointer ke objek status konversi.

wcsrtombs () Nilai kembali

  • Jika berhasil, fungsi wcsrtombs () mengembalikan jumlah karakter multibyte yang ditulis ke dest tidak termasuk karakter null lebar terminating tetapi termasuk urutan shift.
    Jika dest adalah penunjuk nol, ia mengembalikan jumlah karakter lebar yang akan ditulis tidak termasuk karakter null yang mengakhiri.
  • Pada kesalahan konversi, -1 dikembalikan dan errno disetel ke EILSEQ .

Contoh: Bagaimana fungsi wcsrtombs () bekerja?

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

Saat Anda menjalankan program, hasilnya adalah:

 Jumlah karakter multibyte yang ditulis (tidak termasuk " 0") = 8 Karakter multibyte = ݣݗݿݟ

Artikel yang menarik...