如何将 wstring 转换为 wchar_t*? C++

问题描述 投票:0回答:4

我想将 wstring 转换为 wchar_t*。我已经尝试了我所知道的一切,请帮忙。 我想将 wstring 转换为 wchar_t*。

c++ wchar-t wstring
4个回答
7
投票

您是否尝试阅读参考文献

const wchar_t* wcs = s.c_str();

3
投票

无法将

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

1
投票

我也有同样的问题来到这里。几年后发布我的答案,但这有效:

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());

0
投票

即使在 C++17 之前,这是可能的,就像您可以从常规

char*
获取可变
std::string
一样 - 通过获取其第一个元素的地址:

std::wstring s = ...;
wchar_t* str_ptr = &s[0]
© www.soinside.com 2019 - 2024. All rights reserved.