刚才我正在尝试在我的c程序中使用libunistring.我要处理UTF-8字符串,为此我使用了libunistring库中的u8_strlen()函数.
代码示例:
void print_length(uint8_t *msg) {
printf("Default strlen: %d\n", strlen((char *)msg));
printf("U8 strlen: %d\n", u8_strlen(msg));
}
Run Code Online (Sandbox Code Playgroud)
试想一下我们print_length()用msg = "??????"(西里尔文,utf-8编码)调用.我预计strlen()应该返回12(每个字母6个字母*2个字节),并且
u8_strlen()应该返回6个(只有6个字母).
但我收到了好奇的结果:
Default strlen: 12
U8 strlen: 12
Run Code Online (Sandbox Code Playgroud)
在此之后我试图查找u8_strlen实现,并找到了这段代码:
size_t
u8_strlen (const uint8_t *s)
{
return strlen ((const char *) s);
}
Run Code Online (Sandbox Code Playgroud)
我想知道,这是错误还是正确答案?如果这是正确的,为什么?
我想在我的C++\Linux项目中使用google-glog(日志库).对我来说最重要的功能之一就是滚动文件.即当日志文件大小超过固定阈值时,创建新的日志文件并删除旧的.时间限制相同(每日,每小时等).
也许我错过了什么,但我在这个非常好的图书馆找不到这样的功能.有人可以帮我解决这个问题吗?