string对象的大小

thefirstred 2005-07-28 02:05:53
如果这样定义:string str("hello!");
那sizeof(str)的返回值是多少?为什么?
...全文
202 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡在床板下_ 2005-07-28
  • 打赏
  • 举报
回复
是啊,为了分,多说点废话把~~
string也是个容器,在stl中有定义,楼住想学的话,可以看看
OpenHero 2005-07-28
  • 打赏
  • 举报
回复
你用str.length()不就行了吗?
XBox360 2005-07-28
  • 打赏
  • 举报
回复
1楼说得很清楚了
张佩 2005-07-28
  • 打赏
  • 举报
回复
对象的大小:
举例说,如果类中有一个int成员变量,这个对象大小就是4,如果两个,就是8,如果还有一个char变量,就是10。
oyljerry 2005-07-28
  • 打赏
  • 举报
回复
不同编译器对于string的实现可能不同,sizeof求出来的是string自身的对象占的内存大小
求内容大小用length()/size()好了
张佩 2005-07-28
  • 打赏
  • 举报
回复
string是个类嘛,你得到的是这个类对象的大小。
uoyevoli 2005-07-28
  • 打赏
  • 举报
回复
回复人:jcqstc(jcqstc) ( 一级(初级)) 信誉:100 2005-07-28 14:45:00 得分:0
?
同意1楼的答案
----------------
呵呵,在CSDN混了这么久了,很少能抢到一楼,这次不但抢到了,还有人同意。
万幸,万幸!!

另外
darkstar21cn(爱上小猫的小狗)(读不懂爱情所以来读程序) 说的也很有道理。
darkstar21cn 2005-07-28
  • 打赏
  • 举报
回复
string的大小是固定的,这个大小并不包括它管理的字符串长度。各个版本的stl实现不太一样所以得到的sizeof (string)也是不一样的。
jcqstc 2005-07-28
  • 打赏
  • 举报
回复
同意1楼的答案
sdbtb 2005-07-28
  • 打赏
  • 举报
回复
VC6.0, sizeof(str) == 16.
chunhai12 2005-07-28
  • 打赏
  • 举报
回复
sizeof()是类型存储空间
string对象的大小应该用length()或size()
beyondtkl 2005-07-28
  • 打赏
  • 举报
回复
自己去試一下。。

string是會自動增長的。。。。可以參考 深入剖析stl源碼。。。
uoyevoli 2005-07-28
  • 打赏
  • 举报
回复
至于sizeof(str)由于我现在没有C++编译器,也无法验证到底值为多少,不过
肯定不会很大,string对象内部核心就是一个指针和一些辅助的状态变量而已。
不会超过40个字节的。
uoyevoli 2005-07-28
  • 打赏
  • 举报
回复
sizeof(str)返回的是一个string对象本身所占的内存大小,不管你的string里
存储了多大的文本,这个值都是固定的。就像下面:

int i = 0;
int nSize = sizeof(i);//nSize的值应为4
i = 99999;
nSize = sizeof(i);//nSize的值仍然为4

sizefo(i)的值与变量i中存储的值是没有关系的。

想取得一个string的长度,可以用str.length()

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧