Penggunaan WideCharToMultiByte yang Betul: Memulakan Parameter 'lpMultiByteStr'
WideCharToMultiByte() ialah fungsi yang menukar rentetan aksara lebar kepada rentetan aksara rentetan. Salah satu parameternya, lpMultiByteStr, memerlukan permulaan yang teliti untuk menerima rentetan yang ditukar.
Parameter 'lpMultiByteStr' ialah penunjuk kepada penimbal yang akan menerima rentetan yang ditukar. Ia mesti diperuntukkan dengan ruang yang mencukupi untuk menyimpan data yang ditukar. Untuk menentukan saiz penimbal yang diperlukan, panggil WideCharToMultiByte() dengan parameter 'lpMultiByteStr' ditetapkan kepada NULL dan parameter 'dwFlags' ditetapkan kepada WC_NO_BEST_FIT_CHARS. Fungsi ini akan mengembalikan bilangan bait yang diperlukan dalam penimbal 'lpMultiByteStr'.
Setelah penimbal diperuntukkan, ia harus dimulakan dengan sifar sebelum memanggil WideCharToMultiByte(). Ini memastikan bahawa fungsi tidak cuba menukar sebarang data sampah yang mungkin terdapat dalam penimbal.
Berikut ialah contoh mudah yang menunjukkan permulaan 'lpMultiByteStr':
int sizeRequired = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); std::string strTo(sizeRequired, 0); WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], sizeRequired, NULL, NULL);
Kod ini menukar rentetan aksara lebar 'wstr' kepada rentetan aksara berbilangbait 'strTo' menggunakan pengekodan UTF-8. Ia mula-mula menentukan saiz penimbal yang diperlukan, memperuntukkan dan memulakan penimbal saiz itu, dan kemudian memanggil WideCharToMultiByte() dengan hujah yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Memulakan Parameter 'lpMultiByteStr' dengan betul dalam WideCharToMultiByte?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!