Win32/64技術 001 マルチバイト文字列→ワイド文字列変換

提供:yonewiki
2023年10月19日 (木) 23:09時点におけるYo-net (トーク | 投稿記録)による版 (ページの作成:「== '''概要''' ==  マルチバイト文字列をワイド文字列に変換する手法についてです。 <syntaxhighlight lang="cpp"> char pchstr[] = "Win32/64アプリケーション"; int iwcharLen = MultiByteToWideChar(932, 0, pchstr, -1, nullptr, 0); wchar_t* wchstr = new wchar_t[iwcharLen]; MultiByteToWideChar(932, 0, pchstr, -1, wchstr, iwcharLen); </syntaxhighlight> '''<span style="color:darkred;">■MultiByteToWideChar(UINT, DWOR…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

概要

 マルチバイト文字列をワイド文字列に変換する手法についてです。


    char pchstr[] = "Win32/64アプリケーション";

    int iwcharLen = MultiByteToWideChar(932, 0, pchstr, -1, nullptr, 0);
    wchar_t* wchstr = new wchar_t[iwcharLen];
    MultiByteToWideChar(932, 0, pchstr, -1, wchstr, iwcharLen);


■MultiByteToWideChar(UINT, DWORD, LPCCH, int, LPWSTR, int)

第1引数: UINT CodePage

 文字コードの変換もできます。


第2引数: DWORD dwFlags

 変換の種類を示すフラグ。


第3引数: LPCCH lpMultiByteStr

 変換する文字列(char配列)へのポインター。


第4引数: int cbMultiByte

 -1の場合は元の文字列の終端に\0があるところまで変換します。0の場合は変換が失敗します。正の数の場合は指定されたバイト数まで変換をします。


第5引数: LPWSTR lpWideCharStr

 変換後の文字列(wchar_t配列)へのポインター。


第6引数: int cchWideChar

 第5引数の文字列のバイト数を設定します。\0の1バイトも含めた値です。第6引数が0のときは、変換後必要になる文字列のバイト数を戻り値にします。


 関数が成功した場合は、バッファーに書き込まれた文字数が返却されます。