C++でconst char*をLPWSTRに変換する方法


まず、const char*型の文字列をLPWSTR型に変換するためには、MultiByteToWideChar関数を使用します。この関数は、マルチバイト文字列をワイド文字列に変換するためのものです。

以下に、具体的なコード例を示します。

#include <Windows.h>
#include <iostream>
LPWSTR ConvertToLPWSTR(const char* str)
{
    int size = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
    LPWSTR wideStr = new WCHAR[size];
    MultiByteToWideChar(CP_UTF8, 0, str, -1, wideStr, size);
    return wideStr;
}
int main()
{
    const char* narrowStr = "Hello, World!";
    LPWSTR wideStr = ConvertToLPWSTR(narrowStr);
    // wideStrを使用して必要な処理を行う
    delete[] wideStr;
    return 0;
}

上記の例では、ConvertToLPWSTRという関数を定義しています。この関数は、与えられたconst char*型の文字列をLPWSTR型に変換します。MultiByteToWideChar関数を使用して、まず変換後のワイド文字列のサイズを取得し、そのサイズに合わせたメモリを確保します。そして、再度MultiByteToWideChar関数を使用して実際の変換を行います。

メイン関数では、const char*型の文字列を定義し、ConvertToLPWSTR関数を呼び出してLPWSTR型に変換します。変換後は、wideStrという変数に格納されます。必要な処理を行った後、メモリを解放するためにdelete[]演算子を使用してwideStrを削除します。

この方法を使用することで、const char*型の文字列をLPWSTR型に変換することができます。