我想将 wstring 转换为 wchar_t*。我已经尝试了我所知道的一切,请帮忙。 我想将 wstring 转换为 wchar_t*。
您是否尝试阅读参考文献
const wchar_t* wcs = s.c_str();
无法将
wstring
转换为 wchar_t*
,但您可以将其转换为 const wchar_t*
,这就是 K.Kirsz 的 answer 所说的。
这是设计使然,因为您可以访问 const 指针,但不应该操作该指针。查看相关的问题及其答案。
最好的办法是使用 _wcsdup 创建一个新字符串并访问非常量缓冲区,那里给出了一个 ascii 示例。
对于unicode:
wstring str = L"I am a unicode string";
wchar_t* ptr = _wcsdup(str.c_str());
// use ptr here....
free(ptr); // free memory when done
我也有同样的问题来到这里。几年后发布我的答案,但这有效:
std::wstring wname1 = L"wide string";
wchar_t wname2[1024];
wcscpy(wname2, wname1.c_str());
wchar_t* pfoo = new wchar_t[1024];
wcscpy(pfoo, wname1.c_str());
即使在 C++17 之前,这是可能的,就像您可以从常规
char*
获取可变 std::string
一样 - 通过获取其第一个元素的地址:
std::wstring s = ...;
wchar_t* str_ptr = &s[0]