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()方法返回的是字节数,不管是否有汉字。