当前位置: 首页 > wzjs >正文

桐乡微网站建设公司网站开发音乐

桐乡微网站建设公司,网站开发音乐,创世通网站建设,wordpress置顶精华图标贴主在学习string类时遇到过两个困扰我的问题,今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中,调用的是这个string对象的容量(可以存多少个有效字符),而size()是调用的string对象现在有…

贴主在学习string类时遇到过两个困扰我的问题,今天拿出来给大家分享一下我是如何解决的

一、扩容时capacity的增长问题

在string的capacity()接口中,调用的是这个string对象的容量(可以存多少个有效字符),而size()是调用的string对象现在有效字符的个数

string s1;
cout << s1.size() << endl << s1.capacity() << endl;

 直接定义一个空的string对象,然后分别输出它的size和capacity,结果会是0和15

这是因为capacity默认一开始是15(只要size没有超过15)

如果超过了15,capacity会增容到31,从这里开始就有规律了

 每次都是差不多1.5倍的关系

然而,如果在实例化string对象时直接初始化一个大于15的字符串

string s1("Hello World! 123");
cout << s1.size() << endl << s1.capacity() << endl;

它这里会输出16和16,为什么这次超过了15,但不会扩容到31?

这涉及到string的构造函数,它在构造时如果所传的字符串没有超过15,那capacity就是15,如果超过了15,capacity就会和size的值一样,所以下面这段代码的capacity就可以正常扩容了

string s1("Hello");
s1+=" World! 123";//再尾插这个字符串
cout << s1.size() << endl << s1.capacity() << endl;

这次输出的就是16和30了

二、string的存储问题

string和C语言的char*类型最大的区别就是string不是以\0结束,而是会输出全部的有效字符

这串代码会输出什么? 

string s = "Hello \0World";
cout << s << endl;
s+="nihao";
cout << s << endl;

答案是会输出Hello 和Hello nihao

很奇怪吧,不是说string对象不是以\0结尾的吗,\0后面的World怎么不见了,而且如果是以\0结尾,nihao也不应该出现啊?

这是因为string的构造函数和赋值运算符重载函数是以\0作为结束标志,也就是说在拷贝完Hello后,就已经结束拷贝了,nihao是后加上去的,自然会输出

那要怎么样才能发挥string可以输出\0后面的字符的特性呢?

string s = "Hello ";
s +='\0';
s+="World";
cout << s << endl;
s+="nihao";
cout << s << endl;

这时输出的就是Hello World和Hello Worldnihao了

也就是说,既然字符串是读取到\0,那直接以单个字符的形式插入\0就可以了

如果在string类里也想只输出到\0为止,就可以用string的接口函数c_str(),它会将string对象转换成C语言字符串的形式,也就是\0结尾的形式

string s = "Hello ";
s +='\0';
s+="World";
s+="nihao";
cout << s.c_str() << endl;

这次输出的就是Hello 了

http://www.dtcms.com/wzjs/585224.html

相关文章:

  • 彩票系统开发搭建彩票网站服务器安全怎么做单位不能建设网站
  • php网站制作过程中遇到的问题及解决办法专业苏州网站建设公司
  • 做网站怎么切图住建局查询房产信息
  • 一站式+wordpress色多多导入百媚导航
  • 网站设计教程网站传媒公司注册需要多少钱
  • 啪啪男女禁做视频网站wordpress在线生成二维码
  • 包头正大光电 做网站网站网页设计平台
  • 绍兴做微网站个人介绍网页
  • 3g门户网站网站制作过程合理的步骤是
  • 建设银行网站 无法访问郑州做网站优化运营商
  • 游戏优化大师官方下载外贸seo培训
  • 网站如何做定级备案网站做系统下载
  • 软件公司网站模板下载龙岩网站建设亿网行
  • 长沙找人做网站wordpress 写入权限
  • 建站技术建立一个网站怎么做
  • 潍坊尚呈网站建设公司怎么样深圳代做网站后台
  • 江苏省住房和城市建设厅网站wordpress 3.5 漏洞 xss
  • 平台网站建设 厦门电商该怎么做起
  • 中山网站建设方案推广青岛开发区做网站
  • 唐山企业做网站微商
  • 织梦新手网站建设深圳市做网站的公司
  • 网站怎么做飘窗生存曲线哪个网站可以做
  • 新建网站网络空间国外优秀摄影作品网站
  • 网站制作案例流程图考程序员需要什么条件
  • 网站开发主流框架app和网站的成本区别
  • 哎吆嗨网站建设wordpress 赞 分享
  • 点餐系统网站建设常州企业网页制作
  • 网站建设费用说明程序设计教学网站开发
  • 网上销售怎样做网站软文生成器
  • 北京网站制作人才centos 6.8 wordpress