C++でLPCWSTRをstringに変換する方法


LPCWSTRをstringに変換するためには、以下の手順を実行します。

  1. LPCWSTRをワイド文字列として扱う必要があります。そのため、ワイド文字列型の変数を作成し、LPCWSTRを代入します。
LPCWSTR lpcwstr = L"変換したい文字列";
  1. WideCharToMultiByte関数を使用して、ワイド文字列をマルチバイト文字列に変換します。この関数は、ワイド文字列を指定された文字コードに変換するために使用されます。
int bufferSize = WideCharToMultiByte(CP_UTF8, 0, lpcwstr, -1, NULL, 0, NULL, NULL);
char* buffer = new char[bufferSize];
WideCharToMultiByte(CP_UTF8, 0, lpcwstr, -1, buffer, bufferSize, NULL, NULL);

上記のコードでは、CP_UTF8を指定しているため、ワイド文字列をUTF-8エンコーディングのマルチバイト文字列に変換しています。他の文字コードを使用する場合は、適切なフラグを指定してください。

  1. マルチバイト文字列をstringに変換します。
std::string str(buffer);
  1. 不要になったメモリを解放します。
delete[] buffer;

これで、LPCWSTRをstringに変換することができます。

なお、変換時に文字列のエンコーディングに注意してください。上記の例ではUTF-8エンコーディングを使用しましたが、プロジェクトの要件や環境に応じて適切なエンコーディングを選択してください。

この方法を使えば、LPCWSTRとstringの相互変換が可能となり、C++プログラムでUnicode文字列を扱う際に便利です。