我正在阅读这个问题的答案,发现实际上有一个方法称为std::string(我总是使用size())的长度。在std::string类中有这个方法有什么特殊的原因吗?我读了MSDN和cppreference,它们似乎表明size()和length()之间没有区别。如果是这样的话,是不是会让类的用户更加困惑呢?


根据文档,这些只是同义词。size()与其他STL容器(如vector, map等)一致,length()与大多数人对字符串的直观概念一致。人们通常谈论的是一个词、句子或段落的长度,而不是它的大小,因此length()的存在是为了使内容更具可读性。


顺便说一下,Ruby也是一样的,它同时提供了#length和#size作为数组和散列中元素数量的同义词(c++只对字符串使用)。

Minimalists and people who believe "there ought to be one, and ideally only one, obvious way to do it" (as the Zen of Python recites) will, I guess, mostly agree with your doubts, @Naveen, while fans of Perl's "There's more than one way to do it" (or SQL's syntax with a bazillion optional "noise words" giving umpteen identically equivalent syntactic forms to express one concept) will no doubt be complaining that Ruby, and especially C++, just don't go far enough in offering such synonymical redundancy;-).


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


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