我需要将我的 SHA1 (wchar_t*) 转换为普通的 String^ 以便在某个函数中使用它。有任何想法吗?我尝试了谷歌,但所有结果都与我的问题完全相反。:\
注意:我正在使用 C++.NET 框架和 Windows 窗体应用程序
使用构造函数;像这样:
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和此处的广泛讨论。
如果在执行 Dan 的解决方案时遇到错误cannot convert parameter 1 from 'std::string' to 'const wchar_t *'
,那么您提出了错误的问题。与其问如何转换wchar_t*
为String^
,不如问如何转换std::string
为String^
。
使用内置c_str
函数从 中获取一个普通char*
的std::string
,并将其传递给构造函数。
std::string unmanaged = ...;
String^ managed = gcnew String(unmanaged.c_str());
你也可以试试:
#include <msclr\marshal_cppstd.h>
...
String^ managedString = msclr::interop::marshal_as<String^>(/* std::string or wchar_t * or const wchar_t * */);
您可以参考C++ 中的编组概述以了解您可以使用的所有受支持的类型