字符串“ hello,world”在内存中释放时,占用(13)个字节。请问怎样用sizeof编写出程序算出来?

这道题我编写的程序是:#include<iostream>#include<string>usingnamespacestd;voidmain(){strings1("h... 这道题我编写的程序是:
#include<iostream>
#include<string>
using namespace std;
void main()
{
string s1("hello,world");
cout<<sizeof(s1)<<endl;
}
结果算出来是16,怎么回事?请高手解释一下原因,好吗?并且写出正确的程序算法!
展开
 我来答
fgdabin
2011-06-30 · TA获得超过198个赞
知道答主
回答量:102
采纳率:0%
帮助的人:87.4万
展开全部
这个sizeof获得是类string占用的字节数,跟他的值是无关的。
即使你把string s1("hello,world123456788899999");,sizeof(s1)也还是16。等价于sizeof(string)。
要获得s1的长度,可以使用s1.length();
更多追问追答
追问
可是改为s1.length()后,结果算出的是1!这是怎么回事啊?
追答
应该是11吧。这个我试了。
#include
#include
using namespace std;
void main()
{
string s1("hello,world");
cout<<s1.length()<<endl;
}
智楠0352
2011-06-30 · TA获得超过1028个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:490万
展开全部
首先你要弄清楚sizeof是用来求类型的字节数的。
所以不管你给S赋多长的字符串,sizeof(s)始终是16,因为string 类型的长度是16.
可以改成:
#include "stdafx.h"
#include<iostream>
#include<string>

using namespace std;
int main(int argc, char* argv[])
{
string s;
s="Hello,world.";
cout<<s.length()<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-07-06
展开全部
如果是 char str[] = 占12个字节
如果是 char str[] =

就占用 11 个字节
最后那个'\0' 最好加上, 不然 printf("%s", str)可能会出问题。
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友63c8b9e
2011-06-30 · TA获得超过202个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:143万
展开全部
试试s1.sizeof()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式