○BSTRの変換
#include <stdio.h>
#include <windows.h>
int main(char* argv[])
{
//char を BSTR に変換-----------------------------------------------
char*buf="いなばabcd";
LPSTR lstr=buf;
BSTR bstr;
//BSTRに必要なバッファサイズを求める
int bstrlen=(int)MultiByteToWideChar(
CP_ACP, // コードページ ANSI コードページ
0, // 文字の種類を指定するフラグ
lstr, // マップ元文字列のアドレス
strlen(lstr), // マップ元文字列のバイト数
NULL, // マップ先ワイド文字列を入れるバッファのアドレス
0 // バッファのサイズ
);
//バッファを確保する
bstr=SysAllocStringLen(NULL,bstrlen);
//BSTRに複製
MultiByteToWideChar(
CP_ACP,
0,
lstr,
strlen(lstr),
bstr,
bstrlen
);
//BSTR を char に変換----------------------------------------------
char buf2[64]="";
WideCharToMultiByte(
CP_ACP, // コードページ ANSI コードページ
0, // 処理速度とマッピング方法を決定するフラグ
(OLECHAR*)bstr, // ワイド文字列のアドレス
-1, // ワイド文字列の文字数
buf2, // 新しい文字列を受け取るバッファのアドレス
sizeof(buf2) - 1, // 新しい文字列を受け取るバッファのサイズ
NULL, // マップできない文字の既定値のアドレス
NULL // 既定の文字を使ったときにセットするフラグのアドレス
);
printf(buf2);
return 0;
}
▲トップページ
>
Windows と C++