Brick icon

GetUTF8CharSize

Brick | PRO | 09/25/17 09:57:13 AM UTC | 0 ⭐ | 224 👁️ | Never ⏰ | []
C++ |

1.07 KB

|

None

|

0 👍

/

0 👎

constexpr const unsigned char utf8_lookup_table[256] =
{
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
    3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,
};
 
constexpr int GetUTF8CharSize(const char c) noexcept
{
    /*
        if ((c & 0x80) == 0x00) // lead bit is zero, must be a single ascii
            return 1;
        if ((c & 0xE0) == 0xC0) // 110x xxxx
            return 2;
        if ((c & 0xF0) == 0xE0) // 1110 xxxx
            return 3;
        if ((c & 0xF8) == 0xF0) // 1111 0xxx
            return 4;
    
        return 0;
    */
 
    return utf8_lookup_table[static_cast<unsigned char>(c)];
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎