以下は私が試したもので、動作しませんでした。wstringをLPOLESTRに変換するには?
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
いずれかの良い方法は何ですか?
以下は私が試したもので、動作しませんでした。wstringをLPOLESTRに変換するには?
std::wstring = L"Text";
USES_CONVERSION;
LPOLESTR lpDesc = W2OLE((LPWSTR)wsDescr.c_str());
いずれかの良い方法は何ですか?
あなただけの文字列をコピーし、まったくの変換を必要としない:
std::wstring str = L"Text";
LPOLESTR lpDesc = (LPOLESTR) new wchar_t[str.length() + 1];
strcpy(lpDesc, str.c_str());
delete[] lpDesc;
LPOLESTR
は、本質的にwchar_t
あるOLECHAR
の文字列です。したがって、LPOLESTR
はNULLで終了しますwchar_t*
です。 LPOLESTR
は、Microsoftによって作成されたtypedef
です。これらは、MicrosoftがMFC 4.0より前に使用し、その後放棄した自動ANSI/Unicode変換スキームの痕跡です。 Win32開発では、 "OLE"はUnicodeに対応しています。たとえば、Win32開発では、OLECHAR
は単にwchar_t
であり、LPOLESTR
はワイド文字列です(例:wchar_t*
)。それは単純ですwchar_t
文字の配列からwstring
を構築するために
- wchar_tにwstringのから他の方向を変換する
wchar_t* Array = L"Hello";
std::wstring strArray(Array);
*、あなたがこれを行うことができます -
wstring wstr = L"Test wstring";
const wchar_t *pwstr = wstr.c_str();
することができますこれも試してみてください。
LPOLESTR tempString = W2OLE((wchar_t*)wstring_temp.c_str());
LPOLESTRは 'const wchar_t *'ではなく 'wchar_t *'なので、 'pwstr = wstr.c_str()'はキャストなしでは不正ですが、それは不快な質問をします:constでなければそれを行うには安全ですか? –
ちょうど気づいたが、std :: wstring = L "テキスト";有効じゃない。変数名はどこですか? –