• ベストアンサー

System::Stringからconst charへの変換

aという変数がSystem::String型であります。 そこで次に行いたい処理のために、const char*に変換したいのですが、下記のページを参考にプログラムしてみたのですがうまくいきませんでした。 うまくいかなかったというのはまだSystem::String型のままで変換できていなかったとエラーで出てしまいます。 そのような場合は、どのように型変換すればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

あ~PtrToStringCharsだけだとconst char*は取れなかったですね。 wcstombs_sと組み合わせないと。 System::Runtime::InteropServices::Marshal::StringToHGlobalAnsiのほうが楽かな。 (つかい終わったらSystem::Runtime::InteropServices::Marshal::FreeHGlobalが必要) strcmp等のconst char*を引数にとるような関数ではなく、 wcscmp等のconst wchar_t*を引数にとるような関数ならPtrToStringCharsだけでOK。 まぁ、Stringクラスを使っているから、str~の関数をあえて使うような 無駄なことはふつうはしないでしょうけど。

xxmajimaji
質問者

お礼

わかりました。 ありがとうございます。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ほえ? pin_ptr< const wchar_t > p = PtrToStringChars( s ); の p って, まさにここで定義してるじゃん.

xxmajimaji
質問者

お礼

ありがとうございます。

回答No.1

http://forums.microsoft.com/msdn-ja/showpost.aspx?postid=818937&siteid=7 を参考にどうぞ。 const char*ならPtrToStringCharsを使うのが一番楽でしょう。

xxmajimaji
質問者

補足

ありがとうございます。 教えていただいたPtrToStringCharsを使ってみたのですが、 pin_ptr< const wchar_t > p = PtrToStringChars( s ); というところのpがどこで宣言されているのかがわからないのですが教えていただけますでしょうか?