可能重复:
std::string的length()和size()成员函数
我总是通过size()
成员函数检索std::string
的长度。 老实说,我从来不知道还有一个length()
成员函数。 现在,我已经了解到了。 所以,我想知道这两者之间是否有任何区别,在很可能的否定情况下,为什么会有两个完全相同的成员函数?
可能重复:
std::string的length()和size()成员函数
我总是通过size()
成员函数检索std::string
的长度。 老实说,我从来不知道还有一个length()
成员函数。 现在,我已经了解到了。 所以,我想知道这两者之间是否有任何区别,在很可能的否定情况下,为什么会有两个完全相同的成员函数?
size()
在每个STL容器中都有定义,但是对于字符串来说,length()
听起来更熟悉,正如链接问题中接受的答案所解释的那样。我不认为ISO和ANSI曾经有过不同版本的标准。即使是(我认为最初的)SGI STL文档也说明length
只是“size()
的同义词”。 - Matteo Italialength()
被定义为返回size()
;此时无法更改,因为太多的代码依赖于这种行为。 - James McNellisstd::basic_string
没有将“字符”视为与其模板参数CharT
有任何不同的概念,因此实际上并不重要。而CharT
就是它(非常接近)所包含的容器。因此,size()
和length()
在根本上都必须表示以CharT
为单位测量的大小。虽然在某些语言中,size()
可能表示以字节为单位的大小,与字符长度不同,但对于std::string
来说,它永远不会与字符长度不同,并且对于std::wstring
也是如此。 - Steve Jessop