六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 33|回复: 0

“tr”和字符串类型的string str = "tr"对比

[复制链接]

升级  0.75%

323

主题

323

主题

323

主题

探花

Rank: 6Rank: 6

积分
1015
 楼主| 发表于 2013-2-4 22:10:12 | 显示全部楼层 |阅读模式
本文为firedragonpzy原创,转载务必在明显处注明:
转载自【Softeware MyZone】原文链接: http://www.firedragonpzy.com.cn/index.php/archives/1025


  今天在研究sizeof的时候发现了一些比较有趣的现象,代码如下:        string str = "tr";cout<<str.size()<<endl;//2cout<<strlen(str.c_str())<<endl;//2cout<<sizeof(str)<<endl;//32cout<<str[1]<<endl;//r//cout<<"tr".size()<<endl;//报错cout<<strlen("tr")<<endl;//2cout<<sizeof("tr")<<endl;//3cout<<"tr"[2]<<endl;空白事实表明,str和"tr"是不一样的,str是个string类型的对象,占据32位byte的空间,而"tr"是char类型的数组,末尾均以"\0"填充,而string类型的str是不以"\0"填充,这个是被string类型处理了。一个str和"tr"很明显的区别就是"tr"根本就没有size()的方法。再说下sizeof和strlen的区别:sizeof:取得是实际变量占据的内存空间strlen:取得是除去"\0"后变量占据的内存空间
有关sizeof详细可参考:http://firedragonpzy.d3.tuidc.com/index.php/archives/1015
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表