解説
・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文字列 }