Unicode 문자 개수 구하기.
UTF-16 문자 개수 구하기.
int GetUtf16GlyphCount(const wstring& utf16)
{
static const wchar_t HIGH_SURROGATE_MIN = L'\xD800';
static const wchar_t HIGH_SURROGATE_MAX = L'\xDBFF';
static const wchar_t LOW_SURROGATE_MIN = L'\xDC00';
static const wchar_t LOW_SURROGATE_MAX = L'\xDFFF';
bool bHighSurrogate = false;
int count = 0;
for(wstring::const_iterator iter = utf16.begin(); iter != utf16.end(); ++iter)
{
const wchar_t& ch = *iter;
if( HIGH_SURROGATE_MIN <= ch && ch <= HIGH_SURROGATE_MAX )
{
assert( !bHighSurrogate );
bHighSurrogate = true;
}
else if( LOW_SURROGATE_MIN <= ch && ch <= LOW_SURROGATE_MAX )
{
assert( bHighSurrogate );
bHighSurrogate = false;
++count;
assert( count < numeric_limits<int>::max() );
}
else
{
assert( !bHighSurrogate );
++count;
}
}
return count;
}



