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







