- ベストアンサー
System::Stringからconst charへの変換
aという変数がSystem::String型であります。 そこで次に行いたい処理のために、const char*に変換したいのですが、下記のページを参考にプログラムしてみたのですがうまくいきませんでした。 うまくいかなかったというのはまだSystem::String型のままで変換できていなかったとエラーで出てしまいます。 そのような場合は、どのように型変換すればよいのでしょうか?
- みんなの回答 (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~の関数をあえて使うような 無駄なことはふつうはしないでしょうけど。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
ほえ? pin_ptr< const wchar_t > p = PtrToStringChars( s ); の p って, まさにここで定義してるじゃん.
お礼
ありがとうございます。
- bluecampus
- ベストアンサー率66% (138/209)
http://forums.microsoft.com/msdn-ja/showpost.aspx?postid=818937&siteid=7 を参考にどうぞ。 const char*ならPtrToStringCharsを使うのが一番楽でしょう。
補足
ありがとうございます。 教えていただいたPtrToStringCharsを使ってみたのですが、 pin_ptr< const wchar_t > p = PtrToStringChars( s ); というところのpがどこで宣言されているのかがわからないのですが教えていただけますでしょうか?
お礼
わかりました。 ありがとうございます。