std :: string length()和size()成员函数

时间:2009-05-25 05:49:56

标签: c++ string stl size

我正在阅读此question的答案,并发现length()实际上有一个名为std::string的方法(我总是使用size())。在std::string课程中使用此方法有什么具体原因吗?我读过MSDN和CppRefernce,它们似乎表明size()length()之间没有区别。如果是这样的话,是不是让这个班级的用户更加困惑呢?

4 个答案:

答案 0 :(得分:291)

根据documentation,这些只是同义词。 size()与其他STL容器(如vectormap等。)保持一致,length()与大多数容器保持一致人们对字符串的直观概念。人们通常会谈论一个单词,句子或段落的长度,而不是它的大小,所以length()可以使事情更具可读性。

答案 1 :(得分:15)

Ruby就是这样,顺便提一下,提供#length #size作为数组和哈希中项目数量的同义词(C ++只为字符串做)。

极简主义者和那些相信“应该有一个,理想情况下只有一个,显而易见的方式”的人(就像禅的诵经),我想,大多数人都同意你的怀疑,@ Naveen,而粉丝们Perl的“有不止一种方法可以做到这一点”(或SQL的语法中有大量可选的“噪音词”,给出了相同的句法形式来表达一个概念)毫无疑问会抱怨Ruby,特别是C ++,只是不要在提供这种同义冗余方面做得足够远; - )。

答案 2 :(得分:-1)

在使用编码练习工具(LeetCode)时,似乎size()比length()快(尽管基本上可以忽略不计)

答案 3 :(得分:-7)

字符串的长度==字符串有多少位,   size ==这些位的大小, 在字符串中,如果编辑器分配的字符大小为1字节

,则两者都相同