add help to utf8_len
This commit is contained in:
parent
526530caf5
commit
9805cdf6cf
@ -6,6 +6,12 @@
|
|||||||
namespace hack::string
|
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)
|
inline std::size_t utf8_len(const std::string& s)
|
||||||
{
|
{
|
||||||
std::size_t length = 0;
|
std::size_t length = 0;
|
||||||
@ -21,3 +27,4 @@ namespace hack::string
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user