Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menukar char kepada wchar_t dengan Selamat dalam Aplikasi Unicode?
Dalam aplikasi Unicode, menyepadukan rentetan char standard memerlukan penukaran char kepada wchar_t. Walau bagaimanapun, percubaan untuk melaksanakan penukaran ini selalunya menghadapi gelagat yang tidak ditentukan.
Pertimbangkan fungsi berikut:
const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t wc[cSize]; mbstowcs (wc, c, cSize); return wc; }
Fungsi ini memperuntukkan tatasusunan wchar_t, menukar char kepada wchar_t, dan mengembalikan penunjuk ke wc. Walau bagaimanapun, wc ialah pembolehubah tempatan yang didelokasikan pada penghujung fungsi, membawa kepada tingkah laku tidak ditentukan apabila penunjuk yang dikembalikan dinyahrujuk.
Ralat boleh diperbaiki dengan memperuntukkan tatasusunan wchar_t* secara dinamik dalam fungsi:
const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t* wc = new wchar_t[cSize]; mbstowcs (wc, c, cSize); return wc; }
Peruntukan dinamik ini memastikan bahawa memori akan kekal melebihi jangka hayat fungsi.
Adalah penting untuk ambil perhatian bahawa pemanggil GetWC() kini bertanggungjawab untuk menyamakan kedudukan memori yang diperuntukkan. Kegagalan berbuat demikian akan mengakibatkan kebocoran ingatan.
Atas ialah kandungan terperinci Bagaimana untuk Menukar char kepada wchar_t dengan Selamat dalam Aplikasi Unicode?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!