ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

UNICODEのCStringからchar*への変換

文字セットがマルチバイトではなくUNICODEになっているときにCStringからchar*へと変換する方法。
例えばファイルのダイアログボックスで取得したファイル名をchar*型で受け取る関数へと渡すような場合。
コードは次のような感じ。

CFileDialog fd;
CString str(fd.GetFileName());
_bstr_t bstr(str);
char filename[512];
strcpy_s(filename, (char*)bstr);

途中で_bstr_t型をはさんで変換している。一応、アルファベットのみのファイル名では動いているようだけど自信がない。日本語ファイル名とか入っていると駄目かもしれない。
文字コードや文字列を扱う型はいろいろあってややこしい。