如何连接2 LPOLESTR

时间:2010-05-26 15:10:38

标签: c++ string bho concatenation wstring

我想在c ++中连接2个字符串,我不能使用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 个答案:

答案 0 :(得分:4)

OLESTR("s")L"s"相同(OLESTR(s)Ls),这显然不是您想要的。
使用此:

#define url L"http://domain.com"
wstring s1 = url;
wstring s2 = L"/page.html";
wstring s = s1 + s2;
LPCOLESTR o = s.c_str();

这会给你一个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's):

#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!

答案 1 :(得分:2)

你错过了L来使s2的任务有效。

wstring s2 = L"/page.html";