- PR -

System::String::StringBuilderをLPTSTRに変換して、文字列の受け皿にしたい。

1
投稿者投稿内容
ほんちん
会議室デビュー日: 2005/03/18
投稿数: 14
投稿日時: 2005-03-24 17:18
たびたびお世話になります。

なんとか、System::StringはMarshalなどを利用して、C#→ManagedC++→UnmanagedC++に渡せるようになったのですが、
文字列を書き込むような関数に受け皿のバッファポインタLPTSTRをわたすようなときは、どのようにC#から渡せばよいのでしょうか?

すいませんが、よろしくお願いします。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-03-24 18:24
引用:

文字列を書き込むような関数に受け皿のバッファポインタLPTSTRをわたすようなときは、どのようにC#から渡せばよいのでしょうか?



どうせ C++ のコードでは Shift_JIS な文字列を扱っているんでしょうから、C# に戻してやるまでに Unicode に変換しなくてはなりません。

なので、難しいことは考えずに Managed C++ の層で byte[] を C++ のコードに渡してやり、返ってきた値を System.Text.Encoding.GetEncoding ("Shift_JIS").GetString() して System.String を得て、それをそのまま戻り値として返せばいいんじゃないでしょうか。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
ほんちん
会議室デビュー日: 2005/03/18
投稿数: 14
投稿日時: 2005-03-25 09:37
返事が遅れてしまいすいません。渋木宏明(ひどり)様、ご回答ありがとうございます。
結局時間もないのでManagedC++と.NET Frameworkのクラスを利用して開発をすることにしました。C#は魅力的ですが、週末にでも勉強しなおします。

また、質問するときはよろしくお願いします。
1

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