2つの文字列をC++で連結したいのですが、char*を使用できません。
次のことを試しましたが、機能しません。
#define url L"http://domain.com"
wstring s1 = url;
wstring s2 = L"/page.html";
wstring s = s1 + s2;
LPOLESTR o = OLESTR(s);
s1とs2を連結した文字列が必要です。これについてもっと説明する情報やウェブサイトはありますか?ありがとう。
2つの文字列をC++で連結したいのですが、char*を使用できません。
次のことを試しましたが、機能しません。
#define url L"http://domain.com"
wstring s1 = url;
wstring s2 = L"/page.html";
wstring s = s1 + s2;
LPOLESTR o = OLESTR(s);
s1とs2を連結した文字列が必要です。これについてもっと説明する情報やウェブサイトはありますか?ありがとう。
OLESTR("s")
L"s"
は(and OLESTR(s)
is ) と同じですがLs
、これは明らかにあなたが望むものではありません。
これを使って:
#define url L"http://domain.com"
wstring s1 = url;
wstring s2 = L"/page.html";
wstring s = s1 + s2;
LPCOLESTR o = s.c_str();
これにより、 a LPCOLESTR
(つまり a const LPOLESTR
) が得られます。本当に非 const にする必要がある場合は、新しい文字列にコピーできます。
...
wstring s = s1 + s2;
LPOLESTR o = new wchar_t[s.length() + 1];
wcscpy(o, s.c_str()); //wide-string equivalent of strcpy is wcscpy
//Don't forget to delete o!
または、wstring を完全に回避するには (推奨されません。アプリケーションを変換してwstring
、 を使用するよりも、どこでもLPOLESTR
を使用する方がよいでしょう):
#define url L"http://domain.com"
LPCOLESTR s1 = url;
LPCOLESTR s2 = L"/page.html";
LPOLESTR s = new wchar_t[wcslen(s1) + wcslen(s2) + 1];
wcscpy(s, s1); //wide-string equivalent of strcpy is wcscpy
wcscat(s, s2); //wide-string equivalent of strcat is wcscat
//Don't forget to delete s!
s2 の割り当てを機能させるための L がありません。
wstring s2 = L"/page.html";