4/21 – Webセミナー「Delphi / C++Builder 旧バージョンからの移行」で質問があったひらがな・カタカナの変換方法。
C++ Builder Tipにも「全角・半角・ひらがな・カタカナの変換」の記事がありますが、AnsiStringなので古いですね。
後で修正します。
UnicodeStringなら次のようになります。
プロジェクトの設定で、「_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);
LCMapString(GetUserDefaultLCID(),
flags,
text.c_str(),
size,
s.get(),
size);
UnicodeString newtext = s.get();