特定の関数で使用するには、SHA1 (wchar_t*) を通常の String^ に変換する必要があります。何か案は?Google を試してみましたが、すべての結果は私の質問とは正反対でした。:\
注: 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と詳細な説明はこちらを参照してください。
あなたも試すことができます:
#include <msclr\marshal_cppstd.h>
...
String^ managedString = msclr::interop::marshal_as<String^>(/* std::string or wchar_t * or const wchar_t * */);
使用できるサポートされているすべての型については、C++ でのマーシャリングの概要を参照してください。
ダンの解決策を実行してエラーが発生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());