キャスト

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ざこ

キャスト

#1

投稿記事 by ざこ » 16年前

void CDragDropDlg::OnDropfile(HDROP hDropInfo)
{
   long files;
   char filename[256];
  
 
   files=DragQueryFile(hDropInfo,0xFFFFFFFF,filename,256);
   DragQueryFile(hDropInfo,0xFFFFFFFF,filename,256);
   CString Cname=getFileName(filename);//getFileNameはフルパスからパス名を取り出す関数

   char *Newname=strcat(str_ed2,Cname);//問題の箇所


}
str_ed2にはC:\Documents and Setting ●●"が
Cnameにはtest.txtが入っています。
この2つを連結させたいのです。(※str_ed2hはCString型)

CString型からchar *型にキャストしたいのですができますでしょうか?

(LPCSTR)でキャストすればconst char*にはキャストできるみたいですが。

バグ

Re:キャスト

#2

投稿記事 by バグ » 16年前

CStringクラスには、GetAt、GetBufferというメンバ関数があり、キャストではありませんが、おそらく望んでいる事ができると思います。これらを調べてみてください。
しかし、CString同士で連結するだけなら、str1 + str2みたいな事もできますよ?

toyo

Re:キャスト

#3

投稿記事 by toyo » 16年前

キャストしなくてもそのままでできそうな気がしますが質問されているということはうまくいかなかったんですよね
(strcatの第2引数はconst char*なのでむしろLPCTSTRにキャストするほうが望ましいですが)
何かエラーが出たのでしょうか
str_ed2には文字列を追加する十分な領域が残ってますか

ouh

Re:キャスト

#4

投稿記事 by ouh » 16年前

こんな感じでできませんか?
char Newname[_MAX_PATH];
strcpy(Newname, (LPCTSTR)(str_ed2 + Cname));

toyo

Re:キャスト

#5

投稿記事 by toyo » 16年前

ああ勘違い
str_ed2がchar[ ]だと思ってました
str_ed2 + Cname
ではだめですか

ざこ

Re:キャスト

#6

投稿記事 by ざこ » 16年前

あれおかしいな・・どっちかがchar * でどっちかがCString ような・・
CString から char *に変換できません というエラーだったので(逆かも)

toyo

Re:キャスト

#7

投稿記事 by toyo » 16年前

とりあえずstrcat( )の第1引数にCStringは使えません。キャストもできません。
NewnameをCString型にするのはだめですか。
MFCなら全部CStringでやるのがいいのでは。

閉鎖

“C言語何でも質問掲示板” へ戻る