フォト

Google AdSense


  • AdSense
無料ブログはココログ

« そういえば | トップページ | フィルタリング »

2008.01.30

System::Stringからwchar_tへ

C++/CLIの話ですが、IronPythonから文字列を取得してるんですが、それをアンマネージで文字列を引数に取る関数に渡したいのでwchar_t(UNICODE環境なので)の配列とかポインタへ渡したいんですが、なかなかスマートな方法が無いよなぁ。

« そういえば | トップページ | フィルタリング »

Programming」カテゴリの記事

コメント

もうやってるかもしれませんが、下のようなやり方は同ですか?

System::IntPtr intPtr = System::Runtime::InteropServices::Marshal::StringToHGlobalAuto( systemStr );
//取得
const wchar_t* cstr = reinterpret_cast( intPtr.ToPointer() );
//開放
System::Runtime::InteropServices::Marshal::FreeHGlobal( intPtr );

コメントありがとうございます。

なるほど、こういう受け渡し方法があるんですね。ちょっと試してみたいと思います。

VC++ 9.0 でよければ marshal_context を使う手がありますね。
http://msdn2.microsoft.com/ja-jp/library/bb384865.aspx
に変換可能な型の一覧が載っています。

VC++ 9.0では、ネイティブとマネージでの文字列変換のためのマーシャリング ライブラリが追加されていたんですね。

さっそく、コードを書き換えてみましたが、無事に動きました。ありがとうございました。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« そういえば | トップページ | フィルタリング »