首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

sizeof浅析,该怎么解决

2012-03-14 
sizeof浅析如下程序的运行结果:#includestring#includeiostreamusing namespace stdint main(){doubl

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是表示的定义类型所占的空间大小,诸如数组是已经分配的大小,我是新手,有错的不要喷我

热点排行