新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


programing:cpp_builder:cpp_builder-lcmapstring


C++Builder 全角→半角 変換

Unicodeの全角文字を半角文字に変換するようにしたので備忘録を残す。

コーディング例

Windows APIの LCMapString 関数を使って変換する。

    Char buff[130];
    PChar s:
 
    String text = L"変換する文字列";
    int len = text.Length();
 
//  DWORD flags = LCMAP_FULLWIDTH;      //全角文字に変換
    DWORD flags = LCMAP_HALFWIDTH;      //半角文字に変換
//  DWORD flags = LCMAP_HIRAGANA;       //ひらがなに変換
//  DWORD flags = LCMAP_KATAKANA;       //カタカナに変換
 
    const int size = len + 1;
    if (size < 128) {                   // バッファに入る時だけ変換する
        s = buff;
        LCMapString(GetUserDefaultLCID(),
                flags,
                text.c_str(),
                size,
                (LPWSTR)s,		// 変換した文字列の格納先
                size);
        s[len] = 0;
    }
    else {
        s = text.c_str();               // バッファに入らないので変換しない
    }
 
    ShowMessage(s);			/* for debug */

参考

programing/cpp_builder/cpp_builder-lcmapstring.txt · 最終更新: 2020/02/04 17:18 by yoko