解説
・WideCharToMultiByteを使って変換するのは面倒だからCAtlStringなどを利用する。
面倒な変換例
普通ユニコードからMBCSに変換するにはWideCharToMultiByteを利用する。
しかしコードを見て分かるように非常に面倒。
void Test(void)
{
int nLen;
char* pszMBCS;
WCHAR pszUnicode[50];
//変換したいUnicode文字列
wcsncpy(pszUnicode,L"ABCあいう",50);
nLen = ::WideCharToMultiByte(CP_THREAD_ACP, 0, pszUnicode, -1, NULL, 0, NULL, NULL );
pszMBCS = new char[nLen];
::WideCharToMultiByte(CP_THREAD_ACP, 0, pszUnicode, wcslen(pszUnicode)+1, pszMBCS, nLen, NULL, NULL );
//pszMBCSが変換されたMBCS文字列
delete pszMBCS;
}
楽な変換例
邪道っぽいがCAtlStringやCStringを利用すると楽に変換可能。
これらのクラス内部ではWideCharToMultiByteを呼び出して変換している。
#include "atlstr.h"
void Test(void)
{
CAtlStringW strUnicode
CAtlStringA strMBCS
//変換したいUnicode文字列
strUnicode = L"ABCあいう";
//変換
strMBCS = strUnicode;
//strMBCSが変換されたMBCS文字列
}







