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

商城平台网站开发深圳创业邦使用什么网站模板

商城平台网站开发深圳,创业邦使用什么网站模板,福建省建设注册执业资格管理中心网站,wordpress 内容做成目录个人主页 #xff1a; zxctscl 如有转载请先通知 文章目录 1. 为什么学习string类1.1 C语言中的字符串1.2 推荐学习网站 2. 标准库中的string类2.1 string类2.2 string类的常用接口说明2.2.1 constructor2.2.2 遍历string2.2.2.1 下标加[]遍历2.2.2.2 迭代器#xff08;itera… 个人主页 zxctscl 如有转载请先通知 文章目录 1. 为什么学习string类1.1 C语言中的字符串1.2 推荐学习网站 2. 标准库中的string类2.1 string类2.2 string类的常用接口说明2.2.1 constructor2.2.2 遍历string2.2.2.1 下标加[]遍历2.2.2.2 迭代器iterator遍历 1. 为什么学习string类 1.1 C语言中的字符串 C语言中字符串是以’\0’结尾的一些字符的集合为了操作方便C标准库中提供了一些str系列的库函数但是这些库函数与字符串是分离开的不太符合OOP的思想而且底层空间需要用户自己管理稍不留神可 能还会越界访问。 1.2 推荐学习网站 string的学习离不开“看”这里推荐两个网站一个是https://legacy.cplusplus.com/ 还有一个C文档的官网是: https://en.cppreference.com/w/ 更喜欢第一个网站这里面还有c的库。在之后的博客中也是以第一个网站。 2. 标准库中的string类 2.1 string类 在第一个网站里面直接搜索就会看到 它是一个字符顺序表 它底层也是模板是basic_string 字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持其接口类似于标准字符容器的接口但添加了专门用于操作单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型使用它的默认char_traits和分配器类型(关于模板的更多信息请参阅basic_string)。string类是basic_string模板类的一个实例它使用char来实例化basic_string模板类并用char_traits和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)。注意这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列这个类的所有成员(如长度或大小)以及它的迭代器将仍然按照字节(而不是实际编码的字符)来操作。 总结 1、string是表示字符串的字符串类 2、 该类的接口与常规容器的接口基本相同再添加了一些专门用来操作string的常规操作。 3、string在底层实际是basic_string模板类的别名typedef basic_stringchar, char_traits, allocator string; 4、不能操作多字节或者变长字符的序列。 在使用string类时必须包含#include头文件以及using namespace std; 2.2 string类的常用接口说明 string类对象的常见构造 (constructor)函数名称功能说明string()重点构造空的string类对象即空字符串string(const char* s)重点用C-string来构造string类对象string(size_t n, char c)string类对象中包含n个字符string(const strings)重点拷贝构造函数 2.2.1 constructor 查看string类的Member functions 点constructor就会看见7个构造函数 其他的构造函数看说明就很简单了解但是来看看substring (3) 它当中的size_t len npos是什么意思呢? 如果len这个参数给的超过了这个字符串从pos位置开始给的长度举个例子从pos位置开始剩余的长度是10那么它超过了10有多少就给多少直接取到结尾。 如果len超过了剩余的长度或者给npos缺省参数那么这个就是从pos位置开始,直接取到结尾有多少就取多少。 点开来看看npos npos是string里面的一个静态成员常量。 为什么给的是负一就取到字符的结尾size_t无符号整形这里虽然存的是-1但底层存的是补码无符号整形原码和补码是一样的这里反而变成了整形的最大值也就是2^32-1。 来实现一下 #includeiostream using namespace std;#includestring void test_string1() {string s0;string s1(hello world);string s2(s1);string s3(s1, 5, 3);string s4(s1, 5, 10);string s5(s1, 5);cout s0 endl;cout s1 endl;cout s2 endl;cout s3 endl;cout s4 endl;cout s5 endl; } int main() {test_string1();return 0; }来看看s3从第5个位置开始那就是从空格开始拷贝3个字符就是到o的位置。 2. string类对象的容量操作 函数名称功能说明size重点返回字符串有效字符长度length返回字符串有效字符长度capacity返回空间总大小empty 重点检测字符串释放为空串是返回true否则返回falseclear 重点清空有效字符reserve 重点为字符串预留空间**resize 重点将有效字符的个数该成n个多出的空间用字符c填充 注意 **size()**与length()方法底层实现原理完全相同引入size()的原因是为了与其他容器的接口保持一致一般情况下基本都是用size(),它的长度不包括\0。clear()只是将string中有效字符清空不改变底层空间大小。resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个不同的是当字符个数增多时resize(n)用0来填充多出的元素空间resize(size_t n, char c)用字符c来填充多出的元素空间。注意resize在改变元素个数时如果是将元素个数增多可能会改变底层容量的大小如果是将元素个数减少底层空间总大小不变。reserve(size_t res_arg0)为string预留空间不改变有效元素个数当reserve的参数小于string的底层空间总大小时reserver不会改变容量大小。 2.2.2 遍历string 那么要用什么样方式遍历呢 2.2.2.1 下标加[]遍历 void test_string2() {string s1(hello world);for (size_t i 0; i s1.size(); i){cout s1[i] ;}cout endl; }string是私有的不能拿到它的下标想要获取它的长度就用size返回它有多少个字符。 std::string::operator[]这里模拟的是数组。 a[i]就相当于*a(ai),就是返回它的第i个字符。 它的底层简单来实现一下 获取pos位置那个字符 class string { public:char operator[](size_t pos){return _str[pos];} private:char* _str;size_t _size;size_t _capacity; };来试试修改pos位置的字符 void test_string2() {string s1(hello world);for (size_t i 0; i s1.size(); i){cout s1[i] ;}cout endl;for (size_t i 0; i s1.size(); i){s1[i] ;}cout endl;for (size_t i 0; i s1.size(); i){cout s1[i] ;}cout endl; }如果给的是const对象就不能修改。 2.2.2.2 迭代器iterator遍历 iterator是一个类型定义在string里面所以它要指定类域才能取到。 string::iterator it3 s3.begin();while (it3 !s3.end()){cout *it3 ;it3;}cout endl;迭代器行为像指针一样的类型对象这个区间是一个左闭右开。 迭代器像指针但不是指针可以来一下它的类型。 用迭代器也可以实现string的修改 it3 s3.begin();while (it3 ! s3.end()){*it3-3 ;it3;}cout endl;这两种方式其实没有什么区别那为什么会有迭代器呢 迭代器是主流它屏蔽了底层的细节它才是容器的核心访问方式。链表不会用下标访问。 来看个例子 #includeiostream using namespace std;#includestring #includevector #includelist void test_string2() {vectorint v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);vectorint::iterator it v.begin();while (it ! v.end()){cout *it ;it;}cout endl;listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);listint::iterator itt lt.begin();while (itt ! lt.end()){cout *itt ;itt;}cout endl; }范围for 自动取容器中的数据赋值给e自动迭代自动往后走自动结束。 for (auto e : s3){cout e ;}cout endl;范围for底层就是迭代器。 有问题请指出大家一起进步
http://www.hkea.cn/news/14386702/

相关文章:

  • pc下载网站模板提高工作效率的方法
  • 网站建设项目规划书案例怎么自己制作属于自己的网站
  • 住房和城乡建设部网站进不去搭建网站服务器多少钱
  • 推荐专业的网站建设公司竞价排名深度解析
  • 网站宽度关键词排名怎么快速上去
  • 网站群建设管理规定如何自己开个网站平台
  • 新网站如何才做被百度收录网站如何进行优化
  • 网站源码是什么wordpress 面向对象
  • 设计素材网站好融资吗南宁建筑规划设计集团有限公司
  • 网站管理 官网wordpress+广告联盟
  • 婚纱摄影网站建设搭建一个网站教程
  • 重庆网站建设技术托管永康做企业网站的公司
  • 深圳做电商网站网站建设业务的途径
  • 网站建设开什么名目绿建设计院网站
  • 网站购买域名之后再怎么做天气网站建设
  • 宁波网站建设招商加盟企业网站功能对比分析
  • 企业网站建设流程与方法 论文企业门户网站设计报告
  • 衡水企业网站建设公司品牌建设的本质英语作文
  • 蓝色的包装材料企业网站模板白云区建材网站建设推广
  • 网站建设方案书备案朱子网站建设
  • 2010年最具人气的平面设计师必备网站佛山市企业网站建设哪家好
  • 什么事网站开发企业建设营销型网站的目的有
  • 合肥网站seo推广wordpress首页文件夹
  • 做网站如何突出网站特色wordpress slider pro
  • 模板网站建设代理商开网站需要哪些程序
  • 特价锦州网站建设查公司法人信息怎么查
  • 世界优秀摄影作品网站合肥新闻 今天 最新消息
  • 成都 企业网站建设公司价格饮食网站建设策划书
  • 高端网站开发培训网页升级访问中自动跳转中
  • 滨海网站建设找哪家好企业网站建设的优缺点