C++标准库中的string中两者的源代码如下:
size_type __CLR_OR_THIS_CALL length() const
{ // return length of sequence
return (_Mysize);
}
size_type __CLR_OR_THIS_CALL size() const
{ // return length of sequence
return (_Mysize);
}
所以两者没有区别。
length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。
string类的size()/length()方法返回的是字节数,不管是否有汉字。
本文解释了C++标准库中string类的length()与size()方法的实现原理,指出二者实际上并无区别,均返回字符串的实际长度(字节数),包括汉字字符。length()源于C语言习惯,而size()则是为了兼容STL容器接口而引入。
1153

被折叠的 条评论
为什么被折叠?



