Windowsコアプログラミング---UnicodeとAnsi文字列の変換
2297 ワード
マルチバイト文字列をマルチバイト文字列に変換するには、MultiByteToWideCharを使用します.次のようになります.
uCodePageパラメータは、マルチバイト文字列に関連付けられたコードページ値を識別します.
dwFlagsパラメータを使用すると、追加の制御が可能になります.ただし、一般的にはこれらのIDは使用されません.したがって、通常は0値が入力されます.
pMultiByteStrパラメータは、変換する文字列を指定します.
cbMultiByteパラメータは文字列の長さ(バイト数)を指定します.-1が入力されると、関数は自動的にソース文字列の長さを判断します.
pWideCharStrパラメータはメモリバッファアドレスを指定し、変換された文字列を格納します.
cchWideCharパラメータは、バッファの最大長(文字数)を指定します.0が入力されると、関数は変換されず、変換に成功するためにバッファが指定しなければならない広い文字数('0'を含む)を返します.
一般に、マルチバイト文字列をUnicode形式に変換するには、次の手順に従います.
1.MultiByteToWideCharを呼び出し、pWideCharStrパラメータのためにNULLを入力し、cchWideCharパラメータのために0を入力し、cbMultiByteパラメータのために-1を入力する.
2.変換後のUnicode文字列を格納するのに十分なメモリブロックを割り当てる.彼のサイズは前のMultiByteToWideChar呼び出しの戻り値にsizeof(wchar_t)を乗じたものです.
3.再びMultiByteToWideCharを呼び出し、今回はバッファアドレスをpWideCharStrパラメータの値として入力し、1回目のMultiByteToWideChar呼び出しの戻り値にsizeof(wchar_t)を乗じた大きさをcchWideCharパラメータの値として入力する.
4.使用
5.リリース
WideCharToMultiByte関数を使用してUnicodeをマルチバイト文字列に変換します.次のようになります.
ステップはMultiByteToWideCharと同様ですが、値を返すことは、乗算を必要とせずに変換に成功したバイト数を確保することです.
pDefaultCharおよびpfUsedDefaultCharは、uCodePageで指定されたコード・ページに表示されていない文字が1文字しか使用されません.変換できない幅の広い文字に遭遇すると、関数はpDefaultCharパラメータが指す文字を使用します.このパラメータがNULLの場合、関数はシステムのデフォルトの文字を使用します.通常は疑問符です.
int MultiByteToWideChar(
UINT uCodePage,
DWORD dwFlags,
PCSTR pMultiByteStr,
int cbMultiByte,
PWSTR pWideCharStr,
int cchWideChar);
uCodePageパラメータは、マルチバイト文字列に関連付けられたコードページ値を識別します.
dwFlagsパラメータを使用すると、追加の制御が可能になります.ただし、一般的にはこれらのIDは使用されません.したがって、通常は0値が入力されます.
pMultiByteStrパラメータは、変換する文字列を指定します.
cbMultiByteパラメータは文字列の長さ(バイト数)を指定します.-1が入力されると、関数は自動的にソース文字列の長さを判断します.
pWideCharStrパラメータはメモリバッファアドレスを指定し、変換された文字列を格納します.
cchWideCharパラメータは、バッファの最大長(文字数)を指定します.0が入力されると、関数は変換されず、変換に成功するためにバッファが指定しなければならない広い文字数('0'を含む)を返します.
一般に、マルチバイト文字列をUnicode形式に変換するには、次の手順に従います.
1.MultiByteToWideCharを呼び出し、pWideCharStrパラメータのためにNULLを入力し、cchWideCharパラメータのために0を入力し、cbMultiByteパラメータのために-1を入力する.
2.変換後のUnicode文字列を格納するのに十分なメモリブロックを割り当てる.彼のサイズは前のMultiByteToWideChar呼び出しの戻り値にsizeof(wchar_t)を乗じたものです.
3.再びMultiByteToWideCharを呼び出し、今回はバッファアドレスをpWideCharStrパラメータの値として入力し、1回目のMultiByteToWideChar呼び出しの戻り値にsizeof(wchar_t)を乗じた大きさをcchWideCharパラメータの値として入力する.
4.使用
5.リリース
WideCharToMultiByte関数を使用してUnicodeをマルチバイト文字列に変換します.次のようになります.
int WideCharToMultiByte(
UINT uCodePage,
DWORD dwFlags,
PCWSTR pWideCharStr,
int cchWideChar,
PSTR pMultiByteStr,
int cbMultiByte.
PCSTR pDefaultChar,
PBOOL pfUsedDefaultChar);
ステップはMultiByteToWideCharと同様ですが、値を返すことは、乗算を必要とせずに変換に成功したバイト数を確保することです.
pDefaultCharおよびpfUsedDefaultCharは、uCodePageで指定されたコード・ページに表示されていない文字が1文字しか使用されません.変換できない幅の広い文字に遭遇すると、関数はpDefaultCharパラメータが指す文字を使用します.このパラメータがNULLの場合、関数はシステムのデフォルトの文字を使用します.通常は疑問符です.