WideCharToMultiByte の正しい使い方: 'lpMultiByteStr' パラメータの初期化
WideCharToMultiByte() は、ワイド文字列をマルチバイト文字に変換する関数です弦。そのパラメータの 1 つである lpMultiByteStr は、変換された文字列を受け取るために慎重な初期化を必要とします。
「lpMultiByteStr」パラメータは、変換された文字列を受け取るバッファへのポインタです。変換されたデータを保存するために十分なスペースを割り当てる必要があります。必要なバッファ サイズを決定するには、「lpMultiByteStr」パラメータを NULL に設定し、「dwFlags」パラメータを WC_NO_BEST_FIT_CHARS に設定して WideCharToMultiByte() を呼び出します。この関数は、「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 中国語 Web サイトの他の関連記事を参照してください。