LCMapString() を使うと、全角・半角・ひらがな・カタカナの変換ができます。
変換方法は、flagsの値で指定します。指定方法の詳細は「LCMapString」をご覧下さい。
プロジェクトの設定で、「_TCHARのマップ先」を「wchar_t」に設定しています。
#include <boost/scoped_array.hpp>
UnicodeString text = L"変換する文字列";
DWORD flags = LCMAP_FULLWIDTH; //全角文字にします。
//DWORD flags = LCMAP_HALFWIDTH; //半角文字にします。
//DWORD flags = LCMAP_HIRAGANA; //ひらがなにします。
//DWORD flags = LCMAP_KATAKANA; //カタカナにします。
const int size = text.Length() + 1;
boost::scoped_array<wchar_t> s(new wchar_t[size]);
ZeroMemory(s.get(), size * sizeof(wchar_t));
LCMapString(GetUserDefaultLCID(),
flags,
text.c_str(),
size,
s.get(),
size);
UnicodeString newtext = s.get(); //変換した文字列
AnsiString text = "変換する文字列";
//変換方法
DWORD flags = LCMAP_FULLWIDTH; //全角文字にします(適用される場合)。
//DWORD flags = LCMAP_HALFWIDTH; //半角文字にします(適用される場合)。
//DWORD flags = LCMAP_HIRAGANA; //ひらがなにします。
//DWORD flags = LCMAP_KATAKANA; //カタカナにします。
const int size = text.Length() * 2 + 1;
char* s = new char[size];
try
{
ZeroMemory(s, size);
LCMapString(GetUserDefaultLCID(),
flags,
text.c_str(),
text.Length() + 1,
s,
size);
AnsiString newtext = s; //変換した文字列
return newtext;
}
__finally
{
delete[] s;
}