#include<iostream>
#include<string>
using namespace std;
int main()
{
string a;
cout<<sizeof(a)<<endl;
cout<<a.size();
return 0;
}
为什么输出结果不同?
我电脑里输出
4
0
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()
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);得不到答案,原因就在于编译通不过。
参考资料:
本回答被网友采纳那
a.length();是什么?
a.length()和a.size()功能一样
追问就是说 size() 和 length()的作用是获取字符串长度吗?
追答是的两者功能一样,返回字符串的长度
本回答被提问者和网友采纳那
a.length();是什么?
std::string 的 length() 和 size() 的功能是一模一样的。
size() 是 STL中所有容器 都有的 方法,就是返回容器中元素的数量。std::string 也是一个容器,所以也有这个方法。
length() 是 std::string 专有的,但 等价于 size() .