// ANSI コンパイルで、char * 文字列と wchat_t * 文字列の相互変換
// _MBCSが定義されていること
#ifndef _MBCS
#error "Cannot compile! _MBCS isn't defined."
#endif
// _MBCSが定義されていること ここまで
#include <windows.h>
int WINAPI WinMain ( HINSTANCE,
HINSTANCE,
char *,
int )
{
// MBCS → UNICODE
const char csz[] = "あいうえ\\お\\aaa.txt";
int nLengthForWideChar;
nLengthForWideChar = MultiByteToWideChar ( CP_ACP,
0,
csz,
-1,
NULL,
0 );// NULL分もサイズに含まれる
wchar_t *pwsz = new wchar_t[ nLengthForWideChar ];
memset ( pwsz, 0, nLengthForWideChar * sizeof ( wchar_t ) );
MultiByteToWideChar ( CP_ACP,
0,
csz,
-1,
pwsz,
nLengthForWideChar );
MessageBoxW ( NULL,
pwsz,
L"確認",
MB_OK );
// UNICODE → MBCS
int nLengthForMBCS;
nLengthForMBCS = WideCharToMultiByte ( CP_ACP,
0,
pwsz,
-1,
NULL,
0,
NULL,
NULL );// NULL分もサイズに含まれる
char *psz = new char[ nLengthForMBCS ];
memset ( psz, 0, nLengthForMBCS * sizeof ( char ) );
WideCharToMultiByte ( CP_ACP,
0,
pwsz,
-1,
psz,
nLengthForMBCS,
NULL,
NULL );
MessageBox ( NULL,
psz,
"確認",
MB_OK );
delete[] pwsz;
return 0;
}
|