CPP

关于 C++ string 类的长度求取

2018-12-16  本文已影响0人  顽强的猫尾草

size() 与 length()

这两个方法从含义到用法都是完全一样的,但是看了官网的解释后才发现,其实和自己的理解又不完全一致:

String objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).

大致含义是,字符串对象处理字节时不管将来这些字符的编码格式会是什么。返回的值可能与多字节或可变长度字符(例如 UTF-8)序列中的实际编码字符数不对应。

不同编码格式示例:

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
- 01001110 00101101 11100100 10111000 10101101

这也解释了为什么在代码里求一个字符串的 size 得到的数字是 A,放到 word 中去求字符数却是 B。明明看起来只有普通字符,其实编码并不是一个字符只占一个字节的 ASCII 码。

上一篇 下一篇

猜你喜欢

热点阅读