- PR -

System::String から char * への変換について

1
投稿者投稿内容
みけ
会議室デビュー日: 2002/07/25
投稿数: 14
投稿日時: 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 *' に変換できません。


どなたかご存じの方おられましたらご教授ください。

Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2003-08-10 21:07
.NET では変数に格納した内容がメモリのあちこちに移動するという性質があるため、直接 System.String を char * には変換できないと思います(C# の場合は演算子を定義すれば可能ですが)。

Char プロパティ(C++ だと get_Char メソッドかな?)で 1 文字ずつコピーするのが確実かもしれません。もし、managed 配列から unmanaged 配列に簡単に変換する手段があれば、String クラスの ToCharArray メソッドなり、System.Text.Encoding クラスの GetChars メソッドなりを利用するのが一番手っ取り早いかもしれませんが。
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-08-10 21:58
こんばんは、meiです。

引用:

みけさんの書き込み (2003-08-10 15:44) より:
.net の System::String から STL の std::string への型キャストの
やり方がわからず悩んでおります。



http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcconmanagedextensionsforcfrequentlyaskedquestions.asp
↑こちらにサンプルがあります。
文字列以外のサンプルも並んでいて探しにくいのでページ内を
"vcclr.h の PtrToStringChars を使用します"で検索してみて下さい。
みけ
会議室デビュー日: 2002/07/25
投稿数: 14
投稿日時: 2003-08-10 22:39
IZUMI Yusuke さん mei さん。
いろいろとありがとうございます。

< meiさん
MSDNのFAQに載っていたとは気づきませんでした。
ご丁寧にありがとうございます。

早速試してみます。
1

スキルアップ/キャリアアップ(JOB@IT)