字符串“ 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,怎么回事?请高手解释一下原因,好吗?并且写出正确的程序算法! 展开
#include<iostream>
#include<string>
using namespace std;
void main()
{
string s1("hello,world");
cout<<sizeof(s1)<<endl;
}
结果算出来是16,怎么回事?请高手解释一下原因,好吗?并且写出正确的程序算法! 展开
4个回答
展开全部
这个sizeof获得是类string占用的字节数,跟他的值是无关的。
即使你把string s1("hello,world123456788899999");,sizeof(s1)也还是16。等价于sizeof(string)。
要获得s1的长度,可以使用s1.length();
即使你把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;
}
展开全部
首先你要弄清楚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;
}
所以不管你给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)可能会出问题。
另外,站长团上有产品团购,便宜有保证
如果是 char str[] =
就占用 11 个字节
最后那个'\0' 最好加上, 不然 printf("%s", str)可能会出问题。
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试s1.sizeof()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询