- - PR -
System::String から char * への変換について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-10 15:44
初めまして。よろしくお願いいたします。
Managed C++ と Unmanaged C++ を連係動作させたいのですが .net の System::String から STL の std::string への型キャストの やり方がわからず悩んでおります。 やりたいことは、下のようなことなのですが・・・ bool GetValue( std::string &sResult ) { System::String *s = __gc new System::String( "Test" ); sResult = (char*)s; return true; } このままですと、実行すると error C2440: '型キャスト' : 'System::String __gc *' から 'char *' に変換できません。 どなたかご存じの方おられましたらご教授ください。 | ||||
|
投稿日時: 2003-08-10 21:07
.NET では変数に格納した内容がメモリのあちこちに移動するという性質があるため、直接 System.String を char * には変換できないと思います(C# の場合は演算子を定義すれば可能ですが)。
Char プロパティ(C++ だと get_Char メソッドかな?)で 1 文字ずつコピーするのが確実かもしれません。もし、managed 配列から unmanaged 配列に簡単に変換する手段があれば、String クラスの ToCharArray メソッドなり、System.Text.Encoding クラスの GetChars メソッドなりを利用するのが一番手っ取り早いかもしれませんが。 | ||||
|
投稿日時: 2003-08-10 21:58
こんばんは、meiです。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcconmanagedextensionsforcfrequentlyaskedquestions.asp ↑こちらにサンプルがあります。 文字列以外のサンプルも並んでいて探しにくいのでページ内を "vcclr.h の PtrToStringChars を使用します"で検索してみて下さい。 | ||||
|
投稿日時: 2003-08-10 22:39
IZUMI Yusuke さん mei さん。
いろいろとありがとうございます。 < meiさん MSDNのFAQに載っていたとは気づきませんでした。 ご丁寧にありがとうございます。 早速試してみます。 |
1