读书人

sizeof浅析,该怎么解决

发布时间: 2012-03-14 12:01:13 作者: rapoo

sizeof浅析
如下程序的运行结果:

#include<string>
#include<iostream>
using namespace std;
int main()
{
double a=4;
double *p=&a;
cout<<sizeof(a)<<endl;
cout<<sizeof(p)<<endl;
string str("i am wudi who is you");
string *ptr=&str;
cout<<sizeof(str)<<endl;
cout<<sizeof(*ptr)<<endl;
system("pause");
return 0;
}
提问:何种凡是才可以获得字符串内容的长度呢?而不是其类型所占用的长度

[解决办法]
string有成员函数size()和length()
[解决办法]
str.length();
[解决办法]

探讨

str.length();

[解决办法]
在栈上分配的数组用sizeof(数组名)就是数组内容的长度
[解决办法]
在32位机器上,sizeof(string)是32,不管string对象中有多少个字符,都是32
string s;
string *ss = &s;
sizeof(*ss) 仍然是32
[解决办法]
想获得字符串的长度,使用string s; s.size();
[解决办法]
字符串如果是C考虑strlen,另外,sizeof是表示的定义类型所占的空间大小,诸如数组是已经分配的大小,我是新手,有错的不要喷我

读书人网 >C++

热点推荐