CStringで定義した文字の取得について(VC++)

解決


さら  2006-06-21 16:18:13  No: 62270  IP: 192.*.*.*

前スレ(CStringクラスのMid()の使用方法について)の続きで
申し訳ないのですが・・・。

文字の抜き出しは下記にて行なえました。

CString a( _T( "aabbbcc" ) );
CString b = a.Mid( 3, 3 );

しかし b を別の変数(char *c)などに代入しようとすると
"error C2440: 'argument' : 'class CString' から 'char *' に変換することはできません。"
のエラーとなってしまいます。

環境はVC++5.0です。
いろいろ調べているのですがなかなか解決できずにいます。
何かご教授願います。

編集 削除
さら  2006-06-21 16:21:53  No: 62271  IP: 192.*.*.*

追加で。
String型→Char型へのキャストは無理っぽいですね。

実際には
CStringのbを下記のようにURLへセットしたいのですが。

  pHeaderInfo->SetHeader(pCtxt->m_pFC, "url", b);

もっと調べてみます。
何か少しでもわかりましたらお願いします。

編集 削除
Blue  2006-06-21 16:30:21  No: 62272  IP: 192.*.*.*

> pHeaderInfo
って型は何でしょうか?

> String型→Char型へのキャストは無理っぽいですね。
C++では大文字小文字を別のものとして認識します。
なので

char型 と Char型 はまったく別物です。(String型に関しては論外)


先にもスレ書きましたが、char*型がほしい場合は、別バッファを用意してstrpcyしてください。

CString b = a.Mid( 3, 3 );
char* s;
s = new char[ b.GetLength() + 1 ];
strcpy( s, b );




// 使い終わったらdelete[]する
delete[] s;

編集 削除
シャノン  2006-06-21 20:21:00  No: 62273  IP: 192.*.*.*

const char * 型ならたぶん可能。
だからといって、const char * にしたものを無理やりキャストして char * にしないように。

編集 削除
みつ  2006-06-23 11:32:57  No: 62274  IP: 192.*.*.*

Blueさん、シャノンさん

返信遅れて申し訳ないです。
回答ありがとう御座います。

 > CString b = a.Mid( 3, 3 );
 > char* s;
 > s = new char[ b.GetLength() + 1 ];
 > strcpy( s, b );

上記を使用して解決しました。
また何かご協力下さい。

編集 削除