我不知道如何将 std::wstring
转换为 WCHAR*
std::wstring wstrProcToSearch;
WCHAR * wpProcToSearch = NULL;
std::wcin >> wstrProcToSearch; // input std::wstring
// now i need to convert the wstring to a WCHAR*
有谁知道如何做到这一点?
原文由 Jona 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想从
std::wstring
转换为const WCHAR*
(即返回的指针提供对字符串内容 的只读访问),那么调用std::wstring::c_str()
方法就好了:相反,如果你想 修改
std::wstring
的内容,情况就不一样了。 You can use&wstr[0]
(wherewstr
is a non-empty instance ofstd::wstring
) to access the content of thestd::wstring
(starting from它的第一个字符的地址,并注意字符连续存储在内存中),但您必须注意不要超出字符串的预分配内存。一般来说,如果你有一个长度为
std::wstring
的L
,你可以从索引0
到(L-1)
访问字符在 C++17 之前, 覆盖终止的
'\0'
(位于索引L
)是 _未定义的行为_(实际上,它在 Visual C++ 上是可以的,至少对于 VC9/VS2008 和 VC10 /VS2010)。从 C++17 开始,使用另一个 NUL 覆盖终止的 NUL (
'\0'
) 已变为 有效 并且不再是未定义的行为。如果字符串的大小不合适(即它不足以满足您的需要),那么您可以调用
std::wstring::resize()
为新字符腾出空间(即调整内部std::wstring
的缓冲区),然后使用&wstr[0]
读写std::wstring
的内容。