プロが教える店舗&オフィスのセキュリティ対策術

以前の質問に

int型 → CString型/char型

がありましたが、

CString型をchar*型に変換する方法を
教えていただければありがたいです。

MSDNで「LPCTSTRキャスト」が説明されていましたが、
例が載ってないのでよくわかりませんでした。

よろしくお願いします。

A 回答 (3件)

目的にもよりますが一時的にchar配列として使いたいならCString::GetBuffer()が利用できます。


char配列としての利用が終わったらCString::ReleaseBuffer()する必要がありますが。

直接CString内の文字列を扱う必要があるならCString::operator LPCTSTRで文字列ポインタが得られます。
ただし、CStringオブジェクトをいじると無効ポインタなる可能性があるので気をつけてください。

MSDNのMicrosoft Foundation Classリファレンス→CString→クラスメンバで確認してください。
    • good
    • 0
この回答へのお礼

大変参考になりました。ありがとうございました。

お礼日時:2001/03/13 19:16

自信はないのですが、ちょっと書きたかったので・・・。




---------------

CString cStr = _T("文字列");
char * str = new char[cStr.GetLength() + 1];

strcpy(str,cStr);

~~~
delete [] str;

---------------
↑このようにすればstrにコピーできます。
正しい方法かどうかは分かりませんが。
別にnewでメモリーを確保しなくても普通の配列変数でいいですよ。
    • good
    • 1

LPCTSTRキャストは要するに「const TCHAR*」へのキャストになるので、そのままではchar*としては使えません。


そのため、この場合は「(LPTSTR)(LPCTSTR)hogehoge」という形で、「CString→LPCTSTR→LPTSTR」と二段階キャストをすると、ただの「TCHAR*」にキャストができますから、Unicode環境でなければchar*として使えます。
Unicode環境の場合は残念ながらよくわかりません。
    • good
    • 1
この回答へのお礼

大変参考になりました。ありがとうございました。

お礼日時:2001/03/13 17:49

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A