WideCharToMultiByte 的正確用法:初始化'lpMultiByteStr' 參數
WideCharToMultiByte(MultiByte() 是將寬字節的函數轉換為多字節的函數細繩。它的參數之一 lpMultiByteStr 需要仔細初始化才能接收轉換後的字串。
「lpMultiByteStr」參數是指向將接收轉換後的字串的緩衝區的指標。必須為其分配足夠的空間來儲存轉換後的資料。若要確定所需的緩衝區大小,請呼叫 WideCharToMultiByte(),並將「lpMultiByteStr」參數設為 NULL,並將「dwFlags」參數設為 WC_NO_BEST_FIT_CHARS。該函數將傳回“lpMultiByteStr”緩衝區中所需的位元組數。
分配緩衝區後,應在呼叫 WideCharToMultiByte() 之前將其初始化為零。這確保了該函數不會嘗試轉換緩衝區中可能存在的任何垃圾資料。
這是一個示範「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);
此程式碼使用UTF-8 編碼將寬字串「wstr」轉換為多位元組字串「strTo 」。它首先確定所需的緩衝區大小,分配並初始化該大小的緩衝區,然後使用正確的參數呼叫 WideCharToMultiByte()。
以上是如何正確初始化 WideCharToMultiByte 中的「lpMultiByteStr」參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!