将 String^ 转换为 wstring C++

Posted

技术标签:

【中文标题】将 String^ 转换为 wstring C++【英文标题】:Convert String^ to wstring C++ 【发布时间】:2016-04-24 15:29:49 【问题描述】:

由于这是我的第一篇文章(这是一个问题 :D),我不得不说这个网站很棒而且很有帮助。谢谢你做到了。 所以,这是我的问题......我正在尝试将 String^ 转换为 wstring,已经搜索了 3 天,但找不到任何相关信息。 我正在编写一个程序来创建用户选择的文件的桌面快捷方式。我使用 FolderBrowserDialog^ 以便用户可以选择路径,它返回 String^,我使用 IShellLink 创建快捷方式,它适用于 LPCWSTR。所以我需要将 String^ 转换为 LPCWSTR,我不知道怎么做,但是我可以将 wstring 转换为 LPCWSTR,所以如果我可以将 String^ 转换为 wstring,那就太好了)) 谢谢。

【问题讨论】:

msdn.microsoft.com/en-us/library/d1ae6tz5.aspx 【参考方案1】:

std::wstring new_wstring(c_string) 其中 new_wstring 是您的新 wstring 的名称,而 c_string 是您的 String 的名称: Convert CString to std::wstring

【讨论】:

【参考方案2】:

非常感谢。我想发布代码,以便每个人都可以看到最终结果。这是我所做的:

String^ str1 = "Your Text";
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str1);
CString target = str2;
Marshal::FreeHGlobal((IntPtr)str2);
CString str3 = CString(str2);
std::wstring new_wstring(str3);

【讨论】:

以上是关于将 String^ 转换为 wstring C++的主要内容,如果未能解决你的问题,请参考以下文章

将 String^ 转换为 wstring C++

C++ 使用最少的代码将字符串转换为 wstring 并返回

C++ 将 wstring 转换为 Unicode

将 std::string 转换为 std::wstring 时,C++17 codecvt 抛出“错误转换”

如何将 UTF-8 std::string 转换为 UTF-16 std::wstring?

C++ .NET 将 System::String 转换为 std::string