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

北京网站制作推广ins做甜品网站

北京网站制作推广,ins做甜品网站,seo免费资源大全,wordpress博客 手机网页 wap一、string类对象的常见构造 我们可采取以下的方式进行构造#xff0c;以下是常用的接口#xff1a; //生成空字符串 string; //拷贝构造函数 string(const string str); //用C-string来构造string类对象 string(const char* s); //string类对象中包含n个字符c strin…一、string类对象的常见构造 我们可采取以下的方式进行构造以下是常用的接口 //生成空字符串 string; //拷贝构造函数 string(const string str); //用C-string来构造string类对象 string(const char* s); //string类对象中包含n个字符c string(size_t n, char c); #includestring.h #includeiostream using namespace std;void test1() {string s1; string s2(123456);string s3(s2);string s4(5, c);cout s1 endl;cout s2 endl;cout s3 endl;cout s4 endl; }int main() {test1();return 0; } 二、string类对象的容量操作  这里主要对size、length、capacity、resize、reserve来进行讲解。 size与length大家都可顾名思义猜出其用途即返回String的大小。         capacity大家都有学习过顺序表的经验也可得出其为该容器的容量。         resize将字符串的大小调整为长度为 n 个字符。         clear清除字符串的内容使其变为一个空字符串长度为 0 个字符。这意味着将字符串中的所有字符都删除使其不包含任何字符长度为零。 // 测试string容量相关的接口 // size/clear/resize void Teststring1() {// 注意string类对象支持直接用cin和cout进行输入和输出string s(hello, C!!!);cout s.size() endl;cout s.length() endl;cout s.capacity() endl;cout s endl;// 将s中的字符串清空注意清空时只是将size清0不改变底层空间的大小s.clear();cout s.size() endl;cout s.capacity() endl;// 将s中有效字符个数增加到10个多出位置用a进行填充// “aaaaaaaaaa”s.resize(10, a);cout s.size() endl;cout s.capacity() endl;// 将s中有效字符个数增加到15个多出位置用缺省值\0进行填充// aaaaaaaaaa\0\0\0\0\0// 注意此时s中有效字符个数已经增加到15个s.resize(15);cout s.size() endl;cout s.capacity() endl;cout s endl;// 将s中有效字符个数缩小到5个s.resize(5);cout s.size() endl;cout s.capacity() endl;cout s endl; }从该运行结果我们可以得出这个结论在VS编译器下resize在任何情况下都不会进行缩容  reserve请求更改容量。它指的是让字符串的容量适应计划中的大小更改使其长度最多达到 n 个字符。如果 n 大于当前字符串的容量该函数会导致容器将其容量增加到 n 个字符或更多。在其他所有情况下这被视为一个非约束性的收缩字符串容量的请求容器的实现可以自由进行其他优化并使字符串的容量大于 n。 接下来我们对其进行测试 void Teststring2() {string s;// 测试reserve是否会改变string中有效元素个数s.reserve(100);cout s.size() endl;cout s.capacity() endl;// 测试reserve参数小于string的底层空间大小时是否会将空间缩小s.reserve(50);cout s.size() endl;cout s.capacity() endl; } 我们可以看到reserve与resize一样在任何情况下都不会缩容 三、string类对象的遍历操作 对于string的访问这里提供三种方式 1. 利用库里的重载[]直接进行访问。         2.利用迭代器进行访问。         3.利用范围for其本质还是迭代器 void Teststring3() {string s1(hello C);const string s2(Hello C);cout s1 s2 endl;cout s1[0] s2[0] endl;s1[0] H;cout s1 endl;// s2[0] h; 代码编译失败因为const类型对象不能修改string s(hello Bit);// 3种遍历方式// 需要注意的以下三种方式除了遍历string对象还可以遍历是修改string中的字符// 另外以下三种方式对于string而言第一种使用最多// 1. foroperator[]for (size_t i 0; i s.size(); i)cout s[i] endl;// 2.迭代器string::iterator it s.begin();while (it ! s.end()){cout *it endl;it;}// string::reverse_iterator rit s.rbegin();// C11之后直接使用auto定义迭代器让编译器推到迭代器的类型auto rit s.rbegin();while (rit ! s.rend())cout *rit endl;// 3.范围forfor (auto ch : s)cout ch endl; } 四、string类对象的修改操作  push_back在字符串后尾插字符c append在字符串后追加一个字符串         operator 在字符串后追加字符串str c_str(重点)返回C格式字符串         find npos从字符串pos位置开始往后找字符c返回该字符在字符串中的位置 rfind从字符串pos位置开始往前找字符c返回该字符在字符串中的位置         substr在str中从pos位置开始截取n个字符然后将其返回 void Teststring4() {string str;str.push_back( ); // 在str后插入空格str.append(hello); // 在str后追加一个字符hellostr C; // 在str后追加一个字符C str ; // 在str后追加一个字符串cout str endl;cout str.c_str() endl; // 以C语言的方式打印字符串// 获取file的后缀string file(string.cpp);size_t pos file.rfind(.);string suffix(file.substr(pos, file.size() - pos));cout suffix endl;// npos是string里面的一个静态成员变量// static const size_t npos -1;// 取出url中的域名string url(http://www.cplusplus.com/reference/string/string/find/);cout url endl;size_t start url.find(://);if (start string::npos){cout invalid url endl;return;}start 3;size_t finish url.find(/, start);string address url.substr(start, finish - start);cout address endl;// 删除url的协议前缀pos url.find(://);url.erase(0, pos 3);cout url endl; } 五、vs下string的结构 string总共占28个字节内部结构稍微复杂一点先是有一个联合体联合体用来定义string中字符串的存储空间 当字符串长度小于16时使用内部固定的字符数组来存放 当字符串长度大于等于16时从堆上开辟空间 union _Bxty { // storage for small buffer or pointer to larger one// This constructor previously initialized _Ptr. Dont rely on the new behavior without// renaming _String_val (and fixing the visualizer)._CONSTEXPR20 _Bxty() noexcept : _Buf() {} // user-provided, for fancy pointers_CONSTEXPR20 ~_Bxty() noexcept {} // user-provided, for fancy pointersvalue_type _Buf[_BUF_SIZE];pointer _Ptr;char _Alias[_BUF_SIZE]; // TRANSITION, ABI: _Alias is preserved for binary compatibility (especially /clr)};_Bxty _Bx; 这种设计也是有一定道理的大多数情况下字符串的长度都小于16那string对象创建好之后内部已经有了16个字符数组的固定空间不需要通过堆创建效率高。         其次还有一个size_t字段保存字符串长度一个size_t字段保存从堆上开辟空间总的容量 最后还有一个指针做一些其他事情。 故总共占1644428个字节。 完
http://www.w-s-a.com/news/691798/

相关文章:

  • 网站开发php程序员网上店铺怎么运营
  • mip网站怎么做匹配h5婚纱摄影网站模板
  • 怎么注册建设公司网站域名历史价格查询
  • 爱站网seo工具包互联网软件开发工程师
  • 百度站长工具平台登录郑州seo规则
  • 财税公司做网站精品建站教程
  • 建设区块链网站区块链开发平台有哪些
  • 青年人爱看的网站ie显示wordpress网页不完整
  • 优惠券推广网站怎么做青岛正规网站建设哪家便宜
  • 怎么搞一个服务器建设网站wordpress页眉编辑
  • 计算机企业网站建设论文流量平台是什么意思
  • 成都建设网站公司哪家好上海有名的广告公司
  • 收录优美图片找不到了整站seo优化一般多少钱
  • 大型网站建设哪家好汉川网页设计
  • 深圳品牌策划公司推荐南昌网站怎么做seo
  • 滨州做微商城网站备案时暂时关闭网站
  • 手机网站样式代码网站是怎样制作的
  • 任务发布网站建设苏州园区房价
  • 网站的认识知识付费做的最好的平台
  • 企业电子商务网站设计的原则深圳的网站建设公司怎么样
  • 个人网站趋向wordpress图片搬家
  • 做空压机网站的公司有哪些wordpress 外部链接
  • 网站建设管理成本估计小红书推广平台
  • 一级a做爰片免费观看网站焦作建设企业网站公司
  • 欧阳网站建设2022华为云营销季
  • 快速学做网站高水平的大连网站建设
  • 专业做房地产网站建设wordpress侧面小工具
  • 旅游网站开发的重要性wordpress添加广告插件
  • 关于网站建设管理工作的报告婚纱网站php
  • 东莞市建设培训中心网站那个网站可以看高速的建设情况