Как мне конвертировать из wchar_t * в строку? - PullRequest
2 голосов
/ 18 января 2012

Или как мне инициализировать 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 ]

4 голосов
/ 18 января 2012

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

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

c_str () дает вам const указатель на базовые строковые данные.

4 голосов
/ 18 января 2012

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

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

Изменить: Вопрос изменился.Этот ответ больше не применяется.

...