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()方法返回的是字節數,不管是否有漢字。