在C++的string类中,有两种函数:length和size。他们的作用都是返回字符串的长度
那么,问题来了,他们两者有什么区别?
为了钻研,我们要先找到他们两者的源代码
让我们先找到length的源代码
首先,我们随便定义一个字符串,并调用length
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
s.length();
return 0;
}
然后,重点来了!按住Ctrl,点击length,就会跳到C++的库文件(如果看不懂,就选中length,右键到实现)
我们就可以看到length的源代码
length() const _GLIBCXX_NOEXCEPT
{ return _M_rep()->_M_length; }
然后,按照同样的步骤找到size的源代码
size() const _GLIBCXX_NOEXCEPT
{ return _M_rep()->_M_length; }
可以看到两者的源代码一摸一样,所以这两者其实没有区别
但是为什么要搞两个呢?
其实string一开始只有length,这是C语言延续下来的习惯
而size则是在出现STL之后,为了兼容加入了和STL容器求长度的函数一个名字的size,这样就可以方便的使用于STL的算法
你学废了吗?