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

C\uff0b\uff0b\u4e2dsizeof\uff08\uff09,strlen(),string\u7684length()\u548csize()\u6709\u4ec0\u4e48\u533a\u522b\uff1f\uff1f\uff1f

sizeof \u6c42\u51fa\u7684\u662f\u5bf9\u8c61\u6240\u5360\u6709\u7a7a\u95f4\u7684\u5b57\u8282\u6570
strlen \u6c42\u51fa\u7684\u662f\u5b57\u7b26\u6570\u7ec4\u7b2c\u4e00\u4e2a'\0'\u524d\u7684\u5b57\u8282\u6570
\u4f8b\u5982sizeof("abc\0cd")\u6c42\u51fa\u7684\u662f7
strlen("abc\0cd")\u6c42\u51fa\u7684\u662f3

string \u7684length\u548csize\u6ca1\u6709\u533a\u522b

string a\uff1b
a.size() \u5982\u679c\u6ca1\u6709\u5b9a\u4e49size_type,\u8fd4\u56de\u7684\u662f\u65e0\u7b26\u53f7\u6574\u578b\uff0c\u5982\u679c\u5b9a\u4e49\u4e86size_type,\u5219\u8fd4\u56de\u7684\u662f\u5b9a\u4e49\u4e86\u7684size_type\u7c7b\u578b\uff0c\u8be6\u7ec6\u89c1\u4e0b\u6587

vectora(5)\uff1b
a.size() \u8fd4\u56de\u7684\u4e5f\u662f\u65e0\u7b26\u53f7\u6574\u578b

vectora(5)
a.size() \u8fd4\u56de\u7684\u8fd8\u662f\u65e0\u7b26\u53f7\u6574\u578b

string::size_type\u662fstring\u5bf9\u8c61\u7684\u4e00\u4e2a\u5c5e\u6027\uff0c\u53ef\u4ee5\u7528\u4e8e\u5b9a\u4e49string\u7684size\u7c7b\u578b\uff0c\u800c\u7531\u4e8estring::size_type\u662f\u65e0\u7b26\u53f7\u578b\uff0c\u5219\u5b83\u53ef\u4ee5\u5b58\u50a8\u7684\u957f\u5ea6\u662f\u6709\u7b26\u53f7\u578b\u7684\u4e24\u500d\u3002int\u7c7b\u578b\u53d8\u91cf\u6700\u5927\u53ea\u80fd\u5b58\u50a832767\u4e2a\u5b57\u7b26\u7684string\u5bf9\u8c61\uff0c\u5982\u679c\u7528string\u6765\u8bfb\u4e00\u4e2a\u6587\u672c\u6587\u4ef6\uff0c\u8f7b\u6613\u5c31\u4f1a\u591a\u4e8e32767\u4e2a\u5b57\u7b26\u3002\u4e3a\u4e86\u907f\u514d\u6ea2\u51fa\uff0c\u4fdd\u5b58\u4e00\u4e2astring\u5bf9\u8c61size\u7684\u6700\u5b89\u5168\u7684\u65b9\u6cd5\u5c31\u662f\u4f7f\u7528\u6807\u51c6\u5e93\u7c7b\u578bstring:: size_type\u3002

\u8ba1\u7b97string\u4e2d\u7684\u5143\u7d20\u4e2a\u6570\u7528size()\u5c31\u53ef\u4ee5\u4e86\u3002


\u8bfb\u53d6string\u4e2d\u7684\u67d0\u4e2a\u5b57\u7b26\u53ef\u4ee5\u7528\u4e0b\u6807\u8fdb\u884c\u64cd\u4f5c\u3002
\u4f8b\uff1a
string s = "hello";
s[0] \u5c31\u662f\u5b57\u7b26\u4e32\u7684\u7b2c\u4e00\u4e2a\u5b57\u7b26\uff0c s[1] \u5c31\u8868\u793a\u7b2c\u4e8c\u4e2a\u5b57\u7b26\uff08\u5982\u679c\u6709\u7684\u8bdd\uff09\uff0c\u800c s[s.size() - 1] \u5219\u8868\u793a s \u7684\u6700\u540e\u4e00\u4e2a\u5b57\u7b26\u3002

\u7528\u4ee5\u4e0b\u65b9\u6cd5\u4f9d\u6b21\u8bfb\u53d6s\u4e2d\u7684\u5b57\u7b26
for (string::size_type i = 0; i != s.size(); ++i)
cout << s[i] << endl;

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);得不到答案,原因就在于编译通不过。

参考资料:

百度百科--sizeof()



在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。

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

你可以试一下

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

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

sizeof 是 C语言的一个运算符。功能是 求出 表达式类型 所占用的内存字节数。
size() 是 std::string 类的一个成员函数,功能是 返回string对象内维护的字符串长度。

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

扩展阅读:c对象 ... c++是什么意思 ... c++和python先学哪个 ... c++ size t ... c++教程 ... c++size函数头文件 ... c++编程 ... c c++ java ... 中英文自动翻译器 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网