我想在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串联在一起的字符串。任何信息或网站可以解释更多有关此的信息吗?谢谢。

最佳答案

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(即const LPOLESTR)。如果确实需要将其设为非常量,则可以将其复制到新字符串中:
...
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!

关于c++ - 如何串联2个LPOLESTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2914202/

10-11 18:44