C ++ wcsrtombs () - Perpustakaan Piawai C ++

Fungsi wcsrtombs () dalam C ++ menukar urutan aksara luas menjadi urutan watak multibait sempit.

Fungsi wcsrtombs () ditentukan dalam fail tajuk.

prototaip wcsrtombs ()

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

Fungsi wcsrtombs () menukar rentetan watak lebar yang diwakili oleh * src ke rentetan watak multibait yang sesuai dan disimpan dalam array watak yang ditunjukkan oleh dest jika dest tidak kosong. Maksimum watak len ditulis ke dest.

Proses penukaran mirip dengan memanggil wcrtomb () berulang kali. Penukaran berhenti jika:

  • Watak null yang luas ditukar dan disimpan. Dalam kes ini, src diatur ke nol dan ps mewakili keadaan peralihan awal.
  • Watak lebar yang tidak sah ditemui. Dalam kes ini, src ditetapkan untuk menunjukkan permulaan watak lebar pertama yang belum ditukar.
  • len bytes telah disimpan di dest. Dalam kes ini, src ditetapkan untuk menunjukkan permulaan watak lebar pertama yang belum ditukar.

Parameter wcsrtombs ()

  • > dest: Penunjuk ke array watak di mana watak multibait yang ditukar disimpan.
  • src: Penunjuk ke penunjuk ke watak lebar pertama yang hendak ditukar.
  • len: Bilangan maksimum bait yang tersedia dalam susunan dest.
  • ps: Penunjuk ke objek keadaan penukaran.

wcsrtombs () Nilai pulangan

  • Pada kejayaan, fungsi wcsrtombs () mengembalikan bilangan watak multibait yang ditulis ke dest tidak termasuk watak null lebar yang berakhir tetapi termasuk urutan shift.
    Sekiranya dest adalah penunjuk nol, ia mengembalikan bilangan aksara lebar yang akan ditulis tidak termasuk watak null penamat.
  • Pada ralat penukaran, -1 dikembalikan dan errno ditetapkan ke EILSEQ .

Contoh: Bagaimana fungsi wcsrtombs () berfungsi?

 #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; )

Semasa anda menjalankan program, outputnya adalah:

 Bilangan aksara multibait ditulis (tidak termasuk " 0") = 8 Watak multibait = ݣݗݿݟ

Artikel menarik...