const char* を lpwstr に変換する方法


const char と lpwstr は、それぞれC++で使用される文字列の異なる形式です。const char は、通常のASCII文字列を表すポインタであり、lpwstr はワイド文字列(Unicode)を表すポインタです。Windows APIなど、いくつかのAPI関数では、lpwstr 形式の文字列を要求することがあります。

以下に、const char* を lpwstr に変換するためのシンプルで簡単な方法とコード例を示します。

#include <iostream>
#include <windows.h>
#include <string>
// const char* を lpwstr に変換する関数
std::wstring ConvertToLpwstr(const char* str)
{
    int size = MultiByteToWideChar(CP_UTF8, 0, str, -1, nullptr, 0);
    std::wstring result(size, 0);
    MultiByteToWideChar(CP_UTF8, 0, str, -1, &result[0], size);
    return result;
}
int main()
{
    const char* inputString = "Hello, こんにちは!";
    // const char* を lpwstr に変換
    std::wstring convertedString = ConvertToLpwstr(inputString);
    // 変換結果の表示
    std::wcout << convertedString << std::endl;
    return 0;
}

上記のコードでは、ConvertToLpwstr 関数を使用して const char* を lpwstr に変換しています。この関数では、MultiByteToWideChar 関数を使用して変換を行っています。変換結果は std::wstring オブジェクトとして返されます。

上記のコードを実行すると、Hello, こんにちは! という文字列が正常に lpwstr 形式に変換され、出力されます。

このように、ConvertToLpwstr 関数を使用することで、C++で const char* を lpwstr に簡単に変換することができます。これは、Windows APIなどでワイド文字列が必要な場合に便利です。