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などでワイド文字列が必要な場合に便利です。