6

我需要将我的 SHA1 (wchar_t*) 转换为普通的 String^ 以便在某个函数中使用它。有任何想法吗?我尝试了谷歌,但所有结果都与我的问题完全相反。:\

注意:我正在使用 C++.NET 框架和 Windows 窗体应用程序

4

3 回答 3

7

使用构造函数;像这样:

const wchar_t* const pStr1 = ...;
System::String^ const str1 = gcnew System::String(pStr1);

const char* const pStr2 = ...;
System::String^ const str2 = gcnew System::String(pStr2);

如果您使用标准 C++ 字符串类 (std::wstring或),则可以使用该方法std::string获取指针。c_str()你的代码可能是

const std::wstring const std_str1 = ...;
System::String^ const str1 = gcnew System::String(std_str1.c_str());

请参阅System.String和此处的广泛讨论。

于 2013-03-29T02:39:33.443 回答
1

如果在执行 Dan 的解决方案时遇到错误cannot convert parameter 1 from 'std::string' to 'const wchar_t *',那么您提出了错误的问题。与其问如何转换wchar_t*String^,不如问如何转换std::stringString^

使用内置c_str函数从 中获取一个普通char*std::string,并将其传递给构造函数。

std::string unmanaged = ...;
String^ managed = gcnew String(unmanaged.c_str());
于 2013-03-29T15:32:44.837 回答
1

你也可以试试:

#include <msclr\marshal_cppstd.h>

...

String^ managedString = msclr::interop::marshal_as<String^>(/* std::string or wchar_t * or const wchar_t * */);

您可以参考C++ 中的编组概述以了解您可以使用的所有受支持的类型

于 2013-03-29T20:24:59.463 回答