如何从wchar_t*转换为wstring
How do I convert from a wchar_t* to a 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
指针。
如果LPVOID
指向wchar_t
指针,则您的间接级别是错误的。
LPVOID lpOutBuffer;
wchar_t** t = (wchar_t**)lpOutBuffer;
wstring responseHeaders = wstring(*t);
编辑:问题已更改。这个答案不再适用
再说一遍,太复杂了。只需这样做:
std::wstring TheNewWideString = std::wstring(TheOldWideCharacterTPointer);
它直接适用于我的Microsoft Windows与C++11和CodeBlocks。
相关文章:
- 将日语 wstring 转换为 std::string
- 从 uint32_t 转换为 wchar_t 并存储在 wstring 中时出现访问冲突
- 如何将std::wstring转换为char const[]
- 将utf16宽std::wstring转换为utf8窄std::string以获得罕见字符时出现问题
- 将 char* argv[] 转换为 wstring
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 在 C++ 中将 utf8 wstring 转换为窗口中的字符串
- 如何将 wstring 转换为 wchar_t*?C++
- 如何从 LPWSTR** 转换为 std::vector<std::wstring>
- 从 std::wstring 转换为 jstring
- 将 std::u16string 转换为 std::wstring,无需复制
- 如何将WSTRING中的Unix时间戳转换为char数组中格式的日期
- 转换一个带有UTF8 WSTRING控制台的装饰的字符串
- 如何将平台^字符串转换为wstring,然后与L字符串连接
- 在窗口上将格式化的 C 字符串和参数转换为 wstring
- 为什么我的 BSTR 到 std::wstring 的转换这么慢?我的测试仪不好吗?
- 在std::string和std::wstring之间转换的多平台方式
- 正在将std::wstring转换为const wchar_t x[]
- 使用字符串构造函数从wstring转换为字符串时,是否没有可能的数据丢失
- 将 std::wstring 转换为 SQLWCHAR *