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もうまくいきません。2prinf行目を次のように言い換えます。

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

c_str() はconst、基になる文字列データへのポインターを提供します。

于 2012-01-18T19:54:54.730 に答える