我正在阅读这个问题的答案,发现实际上有一个方法称为std::string(我总是使用size())的长度。在std::string类中有这个方法有什么特殊的原因吗?我读了MSDN和cppreference,它们似乎表明size()和length()之间没有区别。如果是这样的话,是不是会让类的用户更加困惑呢?
当前回答
根据文档,这些只是同义词。size()与其他STL容器(如vector, map等)一致,length()与大多数人对字符串的直观概念一致。人们通常谈论的是一个词、句子或段落的长度,而不是它的大小,因此length()的存在是为了使内容更具可读性。
其他回答
当使用编码实践工具(LeetCode)时,size()似乎比length()更快(尽管基本上可以忽略不计)
字符串长度==字符串有多少位, Size ==这些位的大小, 在字符串中,如果编辑器分配的字符大小为1字节,则两者相同
顺便说一下,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()与其他STL容器(如vector, map等)一致,length()与大多数人对字符串的直观概念一致。人们通常谈论的是一个词、句子或段落的长度,而不是它的大小,因此length()的存在是为了使内容更具可读性。
推荐文章
- decltype(auto)的一些用途是什么?
- Shared_ptr转换为数组:应该使用它吗?
- Printf与std::字符串?
- 禁用复制构造函数
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 只接受特定类型的c++模板
- 如何在PHP中截断字符串最接近于一定数量的字符?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- Ruby数组到字符串的转换
- c++ 11中的递归lambda函数
- 在c++中指针使用NULL或0(零)吗?
- 为什么在Java和。net中不能修改字符串?
- 在c++中,如何将int值附加到字符串中?
- 如何创建一个日期对象从字符串在javascript