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

解決


さら  2006-06-22 01:18:13  No: 62270

前スレ(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-22 01:21:53  No: 62271

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

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

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

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


Blue  2006-06-22 01:30:21  No: 62272

> 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-22 05:21:00  No: 62273

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


みつ  2006-06-23 20:32:57  No: 62274

Blueさん、シャノンさん

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加