以下は私が試したもので、うまくいきませんでした。
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
より良い方法は何ですか?
以下は私が試したもので、うまくいきませんでした。
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
より良い方法は何ですか?
LPOLESTR
OLECHAR
は本質的に である文字列ですwchar_t
。nullLPOLESTR
で終わる も同様wchar_t*
です。LPOLESTR
は、typedef
マイクロソフトによって作成されました。これらは、Microsoft が MFC 4.0 より前に使用し、その後放棄した自動 ANSI/Unicode 変換スキームの痕跡です。Win32 開発の場合、「OLE」は Unicode に対応します。たとえば、Win32 開発では、anOLECHAR
は単なる awchar_t
であり、anLPOLESTR
はワイド文字列 (例: wchar_t*
) です。
wstring
文字の配列から構築wchar_t
するのは簡単です-
wchar_t* Array = L"Hello";
std::wstring strArray(Array);
他の方向を wstring から wchar_t* に変換するには、これを行うことができます -
wstring wstr = L"Test wstring";
const wchar_t *pwstr = wstr.c_str();
これを試すこともできます。
LPOLESTR tempString = W2OLE((wchar_t*)wstring_temp.c_str());
文字列をコピーするだけで、変換はまったく必要ありません。
std::wstring str = L"Text";
LPOLESTR lpDesc = (LPOLESTR) new wchar_t[str.length() + 1];
strcpy(lpDesc, str.c_str());
delete[] lpDesc;