重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

開発環境
XP Home Edtion
Microsoft Visual C++ 2008 Express Edition

PSTR型からString型に変換したいですが
PSTR strText;
char *ree;
ree=(char*)strText;
String^ data;
data=gcnew String(ree);
このままだとchar型なので1文字しか入りません
どのようにしたら何文字も入るようにできますか?

知識不足なところも多々あると思いますがよろしくお願いします。

A 回答 (3件)

 補足頂きました。



 私の使用しているモノは、VisualStudio2005ExpなのでPINVOKEに関しては、一寸分かりません・・・。
 色々調べているのですが、「String^ → char*」 への変換は良く語られているのですが、その逆が中々見つかりませんでした。
 先程一応、此れを見つけました。ただ、VisutalStudio2008では、出来るかどうかわかりません。
 
 http://mag.autumn.org/Content.modf?id=2005050801 …

PSTR pstr = "hello";
System::String^ data = System::Runtime::InteropServices::Marshal::PtrToStringAnsi((System::IntPtr)pstr);

 此れで無理ならば、私の知識ではギブアップと言う事に成ります。
    • good
    • 0
この回答へのお礼

上記のサイトは参考になりました。
ここまで付き合ってもらってありがとうございます。

お礼日時:2008/12/09 22:40

 御礼頂きました。

すんません、私はSQLに対する知識がありません。

 以下に変換の手法が書いてありました。
 http://msdn.microsoft.com/ja-jp/library/bb384859 …
 http://msdn.microsoft.com/ja-jp/library/bb384865 …

 PSTR pstr = "hello";
 String^ data = marshal_as<String^>(pstr);

 ではないでしょうか。

この回答への補足

machongolaさん
回答、ありがとうございます。
調べてみたところ、Microsoft Visual C++ 2008 Express Editionでは
マーシャリングライブラリが
使用できないようで、少し戸惑っています。
(私の勘違いでしたら申し訳ございません)
私が少し調べてみたところ
『PInvoke を使用して文字列をマーシャリングする』との記述を
Visual C++ デベロッパー センターにて見つけました。
このPInvokeというものを用いて
 PSTR pstr = "hello";
 String^ data = marshal_as<String^>(pstr);
と同様の働きをする構文を作成することは可能でしょうか?
度重なる質問をしてしまい、申し訳ございません。
お返事をお待ちしています。

補足日時:2008/12/09 12:05
    • good
    • 0
この回答へのお礼

marshal_asを使うにはPlatform SDKをインストールすればよいのですね?

お礼日時:2008/12/08 17:20

 こんばんは。



 PSTR strText = "hello";
 String^ data = gcnew String(strText, 0, ::strlen(strText));

 なのでは。
 あと、PSTRの素性はchar*なので

 char *ree;
 ree=(char*)strText;

 は必要なさそうです。
    • good
    • 0
この回答へのお礼

変換できましたが、この文字を使ってSQLへの
問い合わせ(SELECT句で使用)を行うことは可能でしょうか?
いま、変換した文字を使用して、SQLへの問い合わせに使用しようと
しているのですが
『'System.Data.SqlClient.SqlException' のハンドルされていない例外が System.Data.dll で発生しました。
追加情報: 名前 "(文字入力領域に入力した文字列)" は、このコンテキストでは許可されません。有効な表記は定数、定数表記、および (コンテキストによっては) 変数です。列名は許可されません。』
とのエラーが、文字を入力し、SELECT文を実行したところで発生してしまっています。
この問題は、どのようにすれば解決できるのでしょうか?

お礼日時:2008/12/08 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!