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

问题描述 投票:0回答:4
我正在阅读这个

问题的答案,发现实际上有一种用于length()

的方法,称为
std::string
(我总是使用
size()
)。在 
std::string
 类中使用此方法有什么具体原因吗?我读了MSDN和CppReference,它们似乎表明
size()
length()
之间没有区别。如果是这样,不是会让类的用户更加困惑吗?

c++ string stl size stdstring
4个回答
474
投票
根据

文档,这些只是同义词。 size()

是为了与其他STL容器(如
vector
map
)保持一致,length()
是为了与大多数人对字符串的直观概念保持一致。人们通常谈论单词、句子或段落的 
length,而不是其大小,因此 length()
 的存在是为了让内容更具可读性。


20
投票
顺便说一句,Ruby 也是一样的,提供

#length

 
#size
 作为数组和散列中项目数量的同义词(C++ 仅对字符串提供此功能)。

极简主义者和那些相信“应该有一种,最好只有一种,明显的方法来做到这一点”(正如 Python 之禅所背诵的那样)的人,我想,大多数人都会同意你的怀疑,@Naveen,而 Perl 的粉丝“有不止一种方法可以做到这一点”(或者 SQL 的语法带有无数可选的“干扰词”,给出了无数相同的等效语法形式来表达一个概念)无疑会抱怨 Ruby,尤其是 C++,只是不去提供这种同义冗余已经足够了;-).


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


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

© www.soinside.com 2019 - 2024. All rights reserved.