c++ - 如何从 wchar_t* 转换为 wstring?

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

最佳答案

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

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

c_str() 为您提供指向底层字符串数据的 const 指针。

关于c++ - 如何从 wchar_t* 转换为 wstring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916159/

相关文章:

c++ - 如何在 Linux API 中使用 wstring(s)?

linux - 如何定义 "wstring"?

C++ lpcwstr 到 wstring

c++ - 具有 "blocking"pop 的单一生产者单一消费者队列

c++ - 如何分析文件并检测文件是否为 H.264 视频格式?

C++ 将非英文文本写入文件

c - swprintf 在 8 位范围之外的字符上阻塞

c++ - 我可以使用 vector 作为二叉树的底层数据存储吗

c++ - 使用作为参数返回的指针的最佳实践是什么

c - 如何在 C 中打印 wchar_t 变量