C++ 关于size()和sizeof()

#include<iostream>#include<string>usingnamespacestd;intmain(){stringa;cout<<sizeof(a)... #include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
cout<<sizeof(a)<<endl;
cout<<a.size();
return 0;
}

为什么输出结果不同?
我电脑里输出
4
0
展开
 我来答
兔丞飞
高粉答主

2018-12-16 · 专注娱乐 专注娱乐 专注娱乐
兔丞飞
采纳数:25 获赞数:19893

向TA提问 私信TA
展开全部

sizeof()(a)返回的是对象占用内存的字节数,而a.size()是string类定义的一个返回字符串大小的函数,两个是完全不一样的概念。

明确两者的概念和作用:

1、size()函数:

c++中,在获取字符串长度时,size()函数与length()函数作用相同。 除此之外,size()函数还可以获取vector类型的长度。 

例如:vector < int> num(15,2) ,则:num.size() = 15。

2、sizeof():

sizeof()运算符用来求对象所占内存空间的大小。

假设以下对象,分别使用sizeof函数:

执行输出结果:

扩展资料

sizeof(...)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。

size是由string vector 和bitset定义的函数,分别用于返回字符个数,元素个数和二进制位的数。string和vector的size成员函数用以返回size_type类型的值。bitset返回size_t的值。

用法,例如string

string st("fddddddddgs");

cout<<"the size of"<<st<<"is"<<st.size();

打印st中的字符个数

size其实就是计算不同类型容器中的元素个数的。

参考资料:百度百科 sizeof()

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
加百列windy
高粉答主

2018-12-14 · 每个回答都超有意思的
知道小有建树答主
回答量:2074
采纳率:100%
帮助的人:96.5万
展开全部

sizeof(a)返回的是对象占用内存的字节数,而a.size()是string类定义的一个返回字符串大小的函数,两个是完全不一样的概念。

明确两者的概念和作用:

1、size()函数:

c++中,在获取字符串长度时,size()函数与length()函数作用相同。 除此之外,size()函数还可以获取vector类型的长度。 

例如:vector < int> num(15,2) ,则:num.size() = 15。

2、sizeof():

sizeof()运算符用来求对象所占内存空间的大小。

假设以下对象,分别使用sizeof函数:

执行输出结果:

扩展资料:

sizeof可以对函数调用求大小,并且求得的大小等于返回类型的大小,但是不执行函数体。

首先sizeof(fun(a,b))的值:其正确是4,因为用sizeof求函数调用的大小时,它得到的是函数返回类型的大小,而fun(a,b)的返回类型是int,sizeof(int)等于4。

函数的返回类型和返回值的类型是不一样的。语句:cout<<sizeof(fun);得不到答案,原因就在于编译通不过。

参考资料:

百度百科--sizeof()

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2015-12-05 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
在c++中size()和sizeof()用法说明:
1、size()是取字符串长度的,跟length()用法相同。
举例:

string str="0123456789";
cout <<"str.length()="<<str.length()<<endl;//结果为10
cout <<"str.size()="<<str.size()<<endl;//结果为10
为了兼容,这两个函数一样。 length()是因为沿用C语言的习惯而保留下来的,string类最初只有length(),引入STL之后,为了兼容又加入了size(),它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。 string类的size()/length()方法返回的是字节数,不管是否有汉字。
2、sizeof
sizeof(...)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
举例说明:
1)char* ss = "0123456789";
sizeof(ss)为4,ss是指向字符串常量的字符指针,sizeof 获得的是指针所占的空间,则为4
sizeof(*ss)为1,*ss是第一个char字符,则为1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dukinkin
2014-08-14 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:937万
展开全部
sizeof返回的是对象占用内存的字节数
而a.size()是string类定义的一个返回字符串大小的函数
两个是完全不一样的概念

你可以试一下

int main()
{
string a=“abcdefg”;
cout<<sizeof(a)<<endl;
cout<<a.size();
return 0;
}

sizeof(a)返回值还是一样的,是cstirng类占据内存的大小
而a.size()会返回字符串的长度
更多追问追答
追问

a.length();是什么?
追答
a.length()和a.size()功能一样
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
viichi
2014-08-14 · TA获得超过355个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:210万
展开全部
sizeof 是 C语言的一个运算符。功能是 求出 表达式类型 所占用的内存字节数。
size() 是 std::string 类的一个成员函数,功能是 返回string对象内维护的字符串长度。

sizeof(a) 的结果为 4,说明 string 类型的对象(占用的内存)大小为4字节
a.size() 的结果为0,说明 对象a 中维护的字符串长度为0.
追问

a.length();是什么?
追答
std::string 的 length() 和 size() 的功能是一模一样的。

size() 是 STL中所有容器 都有的 方法,就是返回容器中元素的数量。std::string 也是一个容器,所以也有这个方法。

length() 是 std::string 专有的,但 等价于 size() .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式