- - PR -
System::String::StringBuilderをLPTSTRに変換して、文字列の受け皿にしたい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-24 17:18
たびたびお世話になります。
なんとか、System::StringはMarshalなどを利用して、C#→ManagedC++→UnmanagedC++に渡せるようになったのですが、 文字列を書き込むような関数に受け皿のバッファポインタLPTSTRをわたすようなときは、どのようにC#から渡せばよいのでしょうか? すいませんが、よろしくお願いします。 | ||||
|
投稿日時: 2005-03-24 18:24
どうせ 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-25 09:37
返事が遅れてしまいすいません。渋木宏明(ひどり)様、ご回答ありがとうございます。
結局時間もないのでManagedC++と.NET Frameworkのクラスを利用して開発をすることにしました。C#は魅力的ですが、週末にでも勉強しなおします。 また、質問するときはよろしくお願いします。 |
1