String中size()、length()、sizeof()的区别
- 在C++中,std::string类有两个成员函数可以用于获取字符串的长度:size()和length()。这两个函数的功能是相同的,它们都返回字符串中字符的数量(不包括结尾的null字符)。
- 这两个函数的区别只是名称不同,其功能是相同的,都用于返回字符串中字符的数量。
- 在实际使用中,size()和length()可以互换使用。但更倾向于使用size(),因为它在STL容器中被广泛使用,并且也被一些其他的STL容器和算法使用。
示例程序
#include <bits\stdc++.h>
using namespace std;
int main()
{
string str="abc";
cout<<"size: "<<str.size()<<endl;
cout<<"length: "<<str.length()<<endl;
cout<<"sizeof(str): "<<sizeof(str)<<endl;
string a="a";
cout<<"sizeof(a): "<<sizeof(a)<<endl;
}
输出结果如下:
size: 3
length: 3
sizeof(str): 32
sizeof(str): 32
- 使用
sizeof()
去验证string
的长度,为什么字符串长度不同一个是a
,一个是abc
,得到的长度却是相同的?都是32
? - 解释:
sizeof()
是C和C++中的运算符,用于获取一个变量或数据类型所占用的字节数。在这里a
或者abc
都是string
类的一个对象。其大小由类的内部实现方式决定。通常情况下,一个std::string对象的大小是由它所包含的数据和信息的总大小来决定的,而不是它所表示的字符串的长度。返回的是一个对象所占用的内存大小,它并不一定等于这个对象所表示的值的大小。在这个例子中,sizeof(str)返回的是std::string对象在内存中占用的大小,而不是字符串"abc"的大小。对象的大小取决于其实现方式和编译器的实现细节,因此在不同的编译环境下,sizeof(string)的返回值可能会不同。在此例中,sizeof(str)的值为32,可能是因为编译器将std::string对象实现为一个包含指针、长度和容量等信息的类,而这些信息所占用的空间大小为32字节。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探