gpt4 book ai didi

c - 我怎样才能得到正确的字符串长度?

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:58 26 4
gpt4 key购买 nike

为什么我的函数计算的字符比预期的多?

int countLength(char* buffer){
int cnt = 0;
for (int i=0; buffer[i] != '\n' && buffer[i] != '\0'; i++){
cnt++;
}
return cnt;
}

例如,如果我传递它“Será chuva?Será gente?”作为输入,它给出 25 而不是 23。这是为什么?

最佳答案

代码会为您提供正确的答案,即使它不是您期望的答案。

问题是您希望它计算字素(如 á),而它计算字节/代码单元(á 由 utf- 中的两个代码单元组成8 范式组成)。

第一个近似是通过跳过连续字节(>0x7f 和 <0xc0)来计算代码点。要实际计算字素,您必须使用适当的 unicode 库,其中包含所有字符信息,例如 international components for unicode (ICU)。 ,并接受他们的决定。

阅读字符集,尤其是 编码。

顺便说一句,cnt 总是镜像 i。虽然优化编译器会删除这种重复,但它甚至不应该存在。

关于c - 我怎样才能得到正确的字符串长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56309286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com