3

或者如何使用 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的调用, 我只是对其进行了更改,以便更容易理解我的示例。

4

2 回答 2

4

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

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

编辑:问题已经改变。这个答案不再适用。

于 2012-01-18T19:36:05.087 回答
4

wstring将对象传递给printf是行不通的。将第二prinf行改写为

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

c_str() 给你一个const指向底层字符串数据的指针。

于 2012-01-18T19:54:54.730 回答