3

glib::ustring を使用して日本語の文字幅の問題に直面しています。

私はこの紐を持っています:ウェッジパンプス

変換したい: ウエッシパンプス

ustring::normalize を使用して、次の文字列を取得します: ウェッジパンプス (実際、ここでは、アクセント付きの各文字が 2 文字の幅を占めています)

この種の処理を行う標準的な方法はありますか? これはICUの方が得意ですか?

半角の文字列と全角の同じ文字列が異なるため、日本語の文字列を 2 つの形式のいずれかに変換する必要があります。

4

1 に答える 1

1

半角/全角ひらがな/カタカナ変換できるLCMapStringがあります

AnsiString text = "変換する文字列"; //input text
//変換方法 how to convert
DWORD flags = LCMAP_FULLWIDTH; //全角文字にします。flag to convert to full width
//DWORD flags = LCMAP_HALFWIDTH; //半角文字にします)。to half width
//DWORD flags = LCMAP_HIRAGANA; //ひらがなにします。to hiragana
//DWORD flags = LCMAP_KATAKANA; //カタカナにします。to 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; //変換した文字列 converted text
  return newtext;
}

参照:

于 2010-07-12T12:28:56.457 に答える