如何从wchar_t *转换为wstring?

时间:2012-01-18 19:32:09

标签: c++ wchar-t wstring

或者如何使用wchar_t *?

初始化wstring

我试过这样的事情,但它并不是很有效。 我给了一个LPVOID,它指向一个wchar_t指针。 我只是想把它变成一个wstring所以我可以在它上面使用一些普通的字符串函数。

LPVOID lpOutBuffer = NULL;
//later in code this is initialized this way
lpOutBuffer = new WCHAR[dwSize/sizeof(WCHAR)];
//fills up the buffer
doStuff(lpOutBuffer, &dwSize);
//try to convert it to a wstring
wchar_t* t =  (wchar_t*)lpOutBuffer;
wstring responseHeaders = wstring(t);

printf("This prints response headers: \n%S", t);
printf("This prints nothing: \n%S", responseHeaders);

doStuff实际上是对WinHttpQueryHeaders的调用 我只是改了它,以便更容易理解我的例子。

2 个答案:

答案 0 :(得分:4)

如果您说LPVOID指向wchar_t 指针 ,则您的间接级别是错误的。

LPVOID lpOutBuffer;
wchar_t** t =  (wchar_t**)lpOutBuffer;
wstring responseHeaders = wstring(*t);

编辑:问题已更改。此答案不再适用。

答案 1 :(得分:4)

wstring对象传递给printf不起作用。将第二个prinf行改为

printf("This prints nothing: \n%S", responseHeaders.c_str()); 

c_str()为您提供了一个指向基础字符串数据的const指针。