Как я могу преобразовать тип данных wchar т* к wstring, которая?


Или как инициализировать wstring с помощью wchar_t*?

Я пробовал что-то вроде этого, но это не совсем работает. Мне дают 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 2

2 ответа:

Передача объекта wstring объекту printf не будет работать. Перефразируйте вторую строку prinf Как

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

C_str () дает вам указатель const на нижележащие строковые данные.

Если LPVOID указывает на a wchar_t указатель Как вы говорите, ваш уровень косвенности неверен.

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

Правка: вопрос изменился. Этот ответ больше не применим.