#include <iostream>
#include <cstring>
int strlen_u8(const char* str)
{
int I = 0, J = 0;
while(str[I])
{
if ((str[I] & 0xC0) != 0x80)
{
++J;
}
++I;
}
return J;
}
int strlen_s_u8(const char* str, unsigned int size)
{
unsigned int I = 0, J = 0;
while(I < size)
{
if ((str[I] & 0xC0) != 0x80)
{
++J;
}
++I;
}
return J;
}
int main()
{
const char* str = u8"ゴールデンタイムラバー/スキマスイッチ";
std::setlocale(LC_ALL, "ja_JP.UTF-8");
std::cout<<strlen_u8(str)<<"\n";
std::cout<<strlen_s_u8(str, strlen(str))<<"\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCmludCBzdHJsZW5fdTgoY29uc3QgY2hhciogc3RyKQp7CiAgICBpbnQgSSA9IDAsIEogPSAwOwoKICAgIHdoaWxlKHN0cltJXSkKICAgIHsKICAgICAgICBpZiAoKHN0cltJXSAmIDB4QzApICE9IDB4ODApCiAgICAgICAgewogICAgICAgICAgICArK0o7CiAgICAgICAgfQogICAgICAgICsrSTsKICAgIH0KICAgIHJldHVybiBKOwp9CgppbnQgc3RybGVuX3NfdTgoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgdW5zaWduZWQgaW50IEkgPSAwLCBKID0gMDsKICAgIHdoaWxlKEkgPCBzaXplKQogICAgewogICAgICAgIGlmICgoc3RyW0ldICYgMHhDMCkgIT0gMHg4MCkKICAgICAgICB7CiAgICAgICAgICAgICsrSjsKICAgICAgICB9CiAgICAgICAgKytJOwogICAgfQogICAgcmV0dXJuIEo7Cn0KCmludCBtYWluKCkKewogICAgY29uc3QgY2hhciogc3RyID0gdTgi44K044O844Or44OH44Oz44K/44Kk44Og44Op44OQ44O877yP44K544Kt44Oe44K544Kk44OD44OBIjsKCiAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsICJqYV9KUC5VVEYtOCIpOwogICAgc3RkOjpjb3V0PDxzdHJsZW5fdTgoc3RyKTw8IlxuIjsKICAgIHN0ZDo6Y291dDw8c3RybGVuX3NfdTgoc3RyLCBzdHJsZW4oc3RyKSk8PCJcbiI7Cn0=