C ++ mbsrtowcs () - Perpustakaan Standard C ++

Fungsi mbsrtowcs () dalam C ++ menukar urutan watak multibait sempit menjadi urutan aksara luas (jenis wchar_t).

Fungsi mbsrtowcs () ditentukan dalam fail tajuk.

prototaip mbsrtowcs ()

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

Fungsi mbsrtowcs () menukar rentetan watak multibait yang byte pertama diwakili oleh * src ke perwakilan watak lebar yang sesuai dan disimpan dalam array watak luas yang ditunjukkan oleh dest. Maksimum watak lebar len ditulis ke dest.

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

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

mbsrtowcs () Parameter

  • dest: Penunjuk ke array di mana watak lebar yang ditukar disimpan.
  • src: Penunjuk ke penunjuk ke watak multibait pertama yang hendak ditukar.
  • len: Aksara lebar nombor maksimum untuk disimpan.
  • ps: Penunjuk ke keadaan penukaran yang digunakan semasa menafsirkan rentetan multibait

mbsrtowcs () Nilai pulangan

  • Pada kejayaan, fungsi mbsrtowcs () mengembalikan bilangan watak lebar yang ditulis ke dest tidak termasuk watak null lebar yang berakhir. Sekiranya dest adalah penunjuk nol, ia mengembalikan bilangan watak lebar yang akan ditulis dengan mempertimbangkan panjang yang tidak terhad.
  • Pada ralat penukaran, -1 dikembalikan dan errno ditetapkan ke EILSEQ .

Contoh: Bagaimana fungsi mbsrtowcs () berfungsi?

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

Semasa anda menjalankan program, outputnya adalah:

 Bilangan aksara lebar yang ditulis (tidak termasuk L " 0") = 4 Watak lebar = ݣݗݿݟ

Artikel menarik...