6

特定の関数で使用するには、SHA1 (wchar_t*) を通常の String^ に変換する必要があります。何か案は?Google を試してみましたが、すべての結果は私の質問とは正反対でした。:\

注: 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

あなたも試すことができます:

#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 に答える
1

ダンの解決策を実行してエラーが発生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 に答える