2

重複の可能性:
String^ を char * に変換する必要があります

私はこの解決策をずっと探していましたが、具体的なものは何も見つかりません。私は Visual Studio C++、Windows フォーム アプリで作業しています。String^値を char 配列に変換する必要があります。からの値を保存しTextBoxましたString^

String^ target_str = targetTextBox->Text;

// lets say that input is "Need this string"

これを変換してString^、次のような出力を取得する必要があります。

char target[] = "Need this string";

それが機能するように定義されchar target[]ているが、この値を から取得したい場合TextBox

マーシャリングを試みましたが、うまくいきませんでした。これを行う方法はありますか?

std::string配列に変換する方法を見つけたcharので、これを解決する別の方法はに変換するString^ことstd::stringですが、これにも問題があります。

4

2 に答える 2

5

あなたの最善の策は、この質問に示されている例に従うことです。

サンプルコードは次のとおりです。

String^ test = L"I am a .Net string of type System::String";
IntPtr ptrToNativeString = Marshal::StringToHGlobalAnsi(test);
char* nativeString = static_cast<char*>(ptrToNativeString.ToPointer());

その理由は、.Net 文字列は明らかに共通言語ランタイムの一部である GC されたオブジェクトであり、InteropServices 境界を使用して CLI 境界を越える必要があるためです。幸運を祈ります。

于 2012-12-02T03:18:06.373 に答える