add help to utf8_len
This commit is contained in:
parent
526530caf5
commit
9805cdf6cf
@ -6,6 +6,12 @@
|
||||
namespace hack::string
|
||||
{
|
||||
// подсчет кол-ва символов
|
||||
// В шестнадцатеричной системе счисления, 0xC0 представляет собой число 192. В бинарной системе это 11000000.
|
||||
// Это число используется как маска для проверки байта в UTF-8 последовательности. И проверка в коде использует битовую операцию "И" (&) с маской 0xC0, чтобы проверить, является ли текущий
|
||||
// байт началом UTF-8 последовательности. В UTF-8 первый байт символа, который не является частью
|
||||
// многобайтовой последовательности, должен начинаться с битов 0 или 110 (в шестнадцатеричной системе это 0x00 или 0xC0).
|
||||
// Проверка (c & 0xC0) != 0x80 используется для определения, является ли текущий байт продолжением UTF-8 многобайтовой последовательности.
|
||||
// Валидные байты продолжения в UTF-8 должны начинаться с бита 10 (в бинарной системе это 0x80 или 10000000).
|
||||
inline std::size_t utf8_len(const std::string& s)
|
||||
{
|
||||
std::size_t length = 0;
|
||||
@ -21,3 +27,4 @@ namespace hack::string
|
||||
return length;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user