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

网站做相册用r做简易的网站

网站做相册,用r做简易的网站,企业电话名单从哪里弄,搜索引擎的四个组成部分及作用#x1f525;博客主页#xff1a;小王又困了 #x1f4da;系列专栏#xff1a;C #x1f31f;人之为学#xff0c;不日近则日退 ❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 #x1f4d2;2.1string类对象的常… 博客主页小王又困了 系列专栏C 人之为学不日近则日退 ❤️感谢大家点赞收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 2.1string类对象的常见构造 2.2string类对象的容量操作 2.3string类对象的访问及遍历操作 2.4string类对象的修改操作 ​编辑 2.5string类对象的查找接口 2.6string类非成员函数 ️前言 C语言中字符串是以\0结尾的一些字符的集合为了操作方便C标准库中提供了一些str系列的库函数 但是这些库函数与字符串是分离开的不太符合OOP的思想而且底层空间需要用户自己管理稍不留神可能还会越界访问。C中引入了string类给我们提供了便利。 一、string类介绍 string是表示字符串的字符串类 string类的接口与常规容器的接口基本相同再添加了一些专门用来操作string的常规操作。string在底层实际是basic_string模板类的别名typedef basic_string string;。不能操作多字节或者变长字符的序列。 小Tips在使用string类时必须包含#include头文件以及using namespace std;。 二、string类的常用接口说明 2.1string类对象的常见构造 string()     构造空的string类对象即空字符串。 int main() {string s1;cout s1 endl;return 0; } string(const char* s)     用一个C的字符串或字符数组来构造一个string类的对象。 int main() {string s1(hellow world);cout s1 endl;return 0; }string(size_t n, char c)     用 n 个字符来构建string类对象。 int main() {string s1(5, x);cout s1 endl;return 0; } string(const strings)      string类的拷贝构造用于构建一个和存在的s1一模一样的对象。 int main() {string s1(5, x);string s2(s1);cout s2 endl;return 0; } string(const string strsize_t possize_t lennpos)     复制str从pos位置开始len个字符的部分使用一个已存在的string类对象的一部分来创建一个新的string类对象。 小Tipsnops是string类里面的一个静态成员变量它是size_t类型初始化为-1即表示整型的最大值。 int main() {string s1(hellow world);string s2(s1, 7, 5);cout s2 endl;return 0; } string(const char* ssize_t n)     用 s 所指向字符串或字符数组的前 n 个字符来初始化创建一个string类对象。 int main() {char s[] hellow ,world;string s1(s, 6);cout s1 endl;return 0; } 2.2string类对象的容量操作 size()     返回字符串有效字符长度 int main() {string s1(hellow world);string s2(hellow C);cout s1.size() endl;cout s2.size() endl;return 0; } length()     返回字符串有效字符长度 int main() {string s1(hellow world);string s2(hellow C);cout s1.length() endl;cout s2.length() endl;return 0; } 小Tipssize()与length()方法底层实现原理完全相同引入size()的原因是为了与其他容器的接口保持一致一般情况下基本都是用size()。 capacity()     返回string对象空间的总大小。 int main() {string s1(hellow world);string s2(hellow world xxxxxxx);cout s1.capacity() endl;cout s2.capacity() endl;return 0; } 小Tipscapacity()会返回对象空间的总大小这个空间是存储有效字符的空间实际上会多开辟一个空间存储‘\0’。同一个对象在不同的环境开辟的空间不同在不同环境下扩容机制也不同。 VS下的扩容机制 int main() {string s1(hellow world);size_t old s1.capacity();cout old endl;for (size_t i 0; i 100; i){s1.push_back(x);if (old ! s1.capacity()){cout s1.capacity() endl;old s1.capacity();}}return 0; } VS下默认开辟15个空间用来存储数据本质上是开16个空间因为还要存‘/0’第一次扩容是2倍后面都是以1.5倍的大小去扩容。  Linux下的扩容机制 在Linux环境下最初对象需要多少空间就开多少后面一次按照2倍的大小进行扩容。 reserve(size_t n 0)     为字符串预留空间。直接一次开辟n个空间可以用来存储n个有效字符可以避免每次都要去扩容。 int main() {string s1(hellow world);s1.reserve(100);size_t old s1.capacity();cout s1.capacity() endl;for (size_t i 0; i 100; i){s1.push_back(x);if (old ! s1.capacity()){cout s1.capacity() endl;old s1.capacity();}}return 0; } 小Tips当我们确定需要多少空间就可以使用reserve()提前开辟好空间即可可以减少扩容次数 大部分的扩容都是异地扩容扩容次数过多会影响效率。 resize(size_t n 0, char c)     resize(size_t n)与resize(size_t n, char c)都是将字符串中有效字符个数改变到n个当n小于当前字符串的长度size()会保留前n个字符将第n个字符后面的所以字符删除当n大于当前字符串的长度size()先会进行扩容不同的是当字符个数增多时resize(size_t n)用‘\0’来填充多出的元素空间resize(size_t n, char c)用字符c来填充多出的元素空间。 int main() {string s1(hellow world);cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;s1.resize(100,x);cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;return 0; } 小Tipsresize在改变元素个数时如果是将元素个数增多可能会改变底层容量的大小如果是将元素个数减少底层空间总大小不变。 reserve只会影响容量不改变有效元素个数当reserve的参数小于string的底层空间总大小时reserver不会改变容量大小,即不会缩容。 reserve只影响容量不影响数据resize既影响容量也影响数据 clean()     清理有效字符不改变容量大小 int main() {string s1(Hello C!);cout 清空之前的size: s1.size() endl;cout 清空之前的capacity: s1.capacity() endl;s1.clear();cout 清空之后的size: s1.size() endl;cout 清空之后的capacity: s1.capacity() endl;return 0; } 小Tipsclear()只是将string中有效字符清空不改变底层空间大小。 2.3string类对象的访问及遍历操作 operator()     返回pos位置的字符 int main() {string s1 hellow world;for (size_t i 0; i s1.size(); i){cout s1[i];}cout endl;return 0; } 小Tips如果字符串是const限定的则该函数返回const char。否则它将返回char。at借口与operator[]借口功能类型operator[]接口发生越界访问程序会直接报错at接口发生越界访问的时候会抛出异常。 begin、end/rebegin、rend     begin获取对象第一个字符的迭代器end获取对象最后一个字符下一个位置的迭代器 int main() {string s1 hellow world;string::iterator it s1.begin();while (it s1.end()){cout *it;it;}cout endl;string::reverse_iterator it s1.rbegin();//反向迭代器while (it s1.rend()){cout *it;it;}cout endl;return 0; }如上代码我们看到迭代器和指针的使用方法类似都可以解引用和对象也可以修改。但迭代器的这些操作都是通过运算符重载来实现的。 小Tips迭代器区间永远都是左闭右开迭代器类型作为类的内置类型可以通过类名::itertator直接访问例如string::itertator就表示string类里面的迭代器类型。普通迭代器可读可写const迭代器限制的是其指向的内容只能读不能写而const迭代器本身可以修改。 范围for int main() {string s1(Hello world);for (auto it : s1){cout it;}cout endl;return 0; }小Tips范围for就是基于迭代器实现的在底层范围for会转化成正向迭代器。 2.4string类对象的修改操作 push back     在字符串后尾插字符c int main() {string s1(Hello world);cout 追加前: s1 endl;s1.push_back(x);cout 追加后: s1 endl;return 0; } append     在字符串后追加一个字符串它有六种重载形式如下图所示 int main() {string s1(Hello world);cout 追加前: s1 endl;s1.append(xxxxxxx);cout 追加后: s1 endl;string s2 abcdefg;cout 追加前: s1 endl;s1.append(s2, 2, 4);cout 追加后: s1 endl;return 0; } operator     通过重载运算符实现追加该运算符重载有三种重载实现形式如下图所示 int main() {string s1(Hello world);cout 追加前: s1 endl;s1 xxxxxx;cout 追加后: s1 endl;string s3 abcdefg;string s2(Hello world);cout 追加前: s2 endl;s2 s3;cout 追加后: s2 endl;return 0; } 小Tips在string尾部追加字符的三种方式中操作用的比较多操作不仅可以连接单个字符还可以连接字符串。 2.5string类对象的查找接口 find     从字符串的pos位置开始往后查找字符或字符串返回其在当前字符串中的位置。 int main() {string s1 hellow world;string s2 world;size_t pos s1.find(s2);cout pos endl;return 0; } substr      在str中从pos位置开始截取n个字符然后将其返回 int main() {string s1 test.txt.cpp;size_t pos s1.rfind(.);if (pos ! string::npos){string s2 s1.substr(pos);cout s2 endl;}return 0; } 2.6string类非成员函数 函数名称功能说明operator尽量少用因为传值返回导致深拷贝效率低operator输入运算符重载operator输出运算符重载getline获取一行字符串relational operators大小比较 小Tipsoperator和getline的区别在于前者遇到空格‘  ’和换行‘\n’会截止而后者默认只有遇到换行‘\n’才截止因此当我们需要从键盘读取一个含有空格的字符串是只能用getline。 结语  本次的内容到这里就结束啦。希望大家阅读完可以有所收获同时也感谢各位读者三连支持。文章有问题可以在评论区留言博主一定认真认真修改以后写出更好的文章。你们的支持就是博主最大的动力。
http://www.pierceye.com/news/7244/

相关文章:

  • 海南网络公司网站建设wordpress书籍推荐
  • vps空间如何做网站备份网站建设的相关书籍
  • 盘锦做网站哪家好中英语网站制作方法
  • 福州网站设计哪家好.win域名做网站怎么样
  • 电子商务网站建设文案五金件外发加工网
  • 网站建设投标书买机票便宜网站建设
  • 网站平面设计如何设计服装网站首页
  • 网站首页网址夸克浏览器看片
  • 软件工程课程网站开发台州网站关键字优化
  • 网站设计的摘要北京门户网站建设公司
  • 十堰网站优化网站的内连接如何做
  • 单页网站是什么l礼品文化网站建设
  • 长春火车站地址电子商务网站建设有哪些知识点
  • 网站源码怎么预览网站建设业务员怎么做
  • 苏州优化价位产品做优化好还是超级网站好
  • 网站做推广赚钱项目页面设计收获心得
  • 建设银行社保卡查询网站石家庄学网站建设
  • 上海龙象建设集团公司网站广州市品牌网站建设企业
  • 网站建站四件套是什么网站内容怎么写有利于排名
  • jquery扁平自适应网站html5模板微信小程序ppt模板
  • 浙江门户网站建设公司施工企业资质序列
  • 彩票开奖网站建设现在去山东会被隔离吗?
  • 做个卖车票的网站怎么做怎么做网站首页
  • 黑群晖wordpress建站电脑培训班附近有吗
  • 网站建设方案设计是什么意思西安做网站云速网络
  • 安徽企业网站制作目前网站软件
  • 比较好的手机网站开发网站合作协议
  • 杭州专业网站建设公司网站开发asp.net和sql数据库
  • 用wordpress建公司网站步骤工作总结ppt模板免费下载
  • 专注高密做网站的中国建设厅官方网站