|
// atlbase.h, comdef.hをインクルードする必要があります。
// #include <atlbase.h>
// #include <comdef.h>
BSTR bpTarget = _bstr_t("あいう");
LPSTR lpResult = ToLPSTR(bpTarget);
SysFreeString(bpTarget);
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
LPSTR ToLPSTR(BSTR bpTarget)
{
// 結果格納用
LPSTR lpResult;
// 変換元のBSTR型の文字列の長さを求める
int intBSTRLen = SysStringLen(bpTarget);
// 変換後、すべて2バイト文字になるとし、領域を確保
// (+ 1は、NULL文字の分)
int intLPSTRLen = intBSTRLen * 2 + 1;
lpResult = new char[intLPSTRLen];
// 変換
int intRet = WideCharToMultiByte(
CP_ACP,
0,
bpTarget,
intBSTRLen,
lpResult,
intLPSTRLen,
NULL,
NULL);
// 終端にNULL文字を設定
lpResult[intRet] = '\0';
// 戻り値
return lpResult;
}
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
|