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

淄博网站建设相关文章宁波厂家关键词优化

淄博网站建设相关文章,宁波厂家关键词优化,网站制作方案,动画网站模板本文介绍的是C关键字string中一些重要用法,以及各种字符串序列的处理操作 ——飘飘何所似,天地一沙鸥 文章目录前言一、string(字符串类)二、string类对象的容量操作2.1 size/length2.2 capacity2.3 empty/clear2.4 resize/reser…

本文介绍的是C++关键字string中一些重要用法,以及各种字符串序列的处理操作
——飘飘何所似,天地一沙鸥
在这里插入图片描述

文章目录

  • 前言
  • 一、string(字符串类)
  • 二、string类对象的容量操作
    • 2.1 size/length
    • 2.2 capacity
    • 2.3 empty/clear
    • 2.4 resize/reserve
  • 三、string类对象的访问及便利操作
    • 3.1 operator[]
    • 3.2 begin+end(迭代器)
    • 3.3 范围for
  • 四、string类对象的修改操作
    • 4.1 operator+=/push_back/append
    • 4.2 c_str
    • 4.3 find/rfind
    • 4.4 substr


前言

string是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。 在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。 C++标准库中string类以类型的形式对字符串进行封装,且包含了字符序列的处理操作。


一、string(字符串类)

  1. 字符串是表示字符序列的类。
  2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。
  3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信息,请参阅basic_string)。
  4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits
    和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)。
  5. 注意,这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列,这个类的所有成员(如长度或大小)以及它的迭代器,将仍然按照字节(而不是实际编码的字符)来操作。

总结:

  1. string是表示字符串的字符串类。
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  3. string在底层实际是:basic_string模板类的别名typedefbasic_string<char,char_traits,allocator> string;
  4. 不能操作多字节或者变长字符的序列。在使用string类时,必须包含#include头文件以及using namespace std;

二、string类对象的容量操作

2.1 size/length

size_t size() const;
计算字符串长度类接口

#include<iostream>using namespace std;int main()
{//创建string类型的字符串strstring str = ("hello C++");//计算str大小std::cout << "The size of str is " << str.size() << " bytes.\n";return 0;
}

在这里插入图片描述
length与size并没有什么区别,仅仅只是在STL没有出现时,length就已经存在了,而我们也知道语言的发展一定是向下兼容的它不会去删除原有的东西,只会出现更多的补丁和更加新鲜的东西

#include<iostream>using namespace std;int main()
{string str = ("hello C++");std::cout << "The size of str is " << str.size() << " bytes.\n";std::cout << "The size of str is " << str.length() << " bytes.\n";return 0;
}

在这里插入图片描述

2.2 capacity

size_t capacity() const;
计算string类空间大小

#include<iostream>using namespace std;int main()
{string str = ("hello C++");std::cout << "The size of str is " << str.size() << " bytes.\n";std::cout << str.capacity() << endl;return 0;
}

在这里插入图片描述

2.3 empty/clear

bool empty() const;
检出字符串释放为空串,是则返回ture,否返回false
void clear();
清空字符串但是不会删除该字符串空间
在这里插入图片描述
仅仅只是一个判断string类字符串是否已经置为空。
在这里插入图片描述
S1中内容已经被删空但是我们看到S1所在空间并没有被释放还是在原来的地址,并且可以访问到,存入新的东西。

2.4 resize/reserve

void resize (size_t n);
void resize (size_t n, char c);

将有效字符改为n,并将多余的空间用c填充

void reserve (size_t n = 0);
为字符串预留空间
在这里插入图片描述

先将s的内容改为和s1一致然后对他们分别使用resize/reserve进行扩容,最后分别输出他们的内容和他们所扩容空间的大小。

resize/reserve根本的区别就在于一个对它所开的空间进行初始化而另一个并不会对开的空间进行初始化,还有一点就是当所开空间小于原有空间时他会保留前面n个数据,然年舍弃多余的部分
另外,在进行空间开辟工作时候,最后事先知道空间用量进行提前预留使用reserve会极大的提高时间复杂度

三、string类对象的访问及便利操作

3.1 operator[]

char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;

返回pos位置的字符,const string类对象调用
不做过多介绍类似于数组的方式来直接获取第pos个数据
在这里插入图片描述

3.2 begin+end(迭代器)

iterator begin();
const_iterator begin() const;

迭代器是string中便利字符串的一种重要工具,具体实现如下
在这里插入图片描述

3.3 范围for

范围for的底层实现就是调用迭代器,在使用的时候借用了关键字auto可以不用定义冗余的类型算是一种很方便的用法不过多介绍,代码如下

for(auto ch:s)
{
cout<<ch<<" ";
ch++;
}
cout<<endl;

四、string类对象的修改操作

4.1 operator+=/push_back/append

string& operator+= (const string& str);
string& operator+= (const char
s);
string& operator+= (char c)
*

最便捷的一种追加方式+=直接在原字符串上进行,可以追加string类/字符串/字符,直接+=
void push_back (char c);
尾插字符c,就是顺序表/链表的那种尾插方式,遍历尾插,不建议用效率很低

在这里插入图片描述
operator+=可以随意的进行字符/字符串/类的追加

append!是坑不作介绍不建议用

4.2 c_str

const char c_str() const;*
c_str()是Borland封装的String类中的一个函数,它返回当前字符串的首字符地址。 换种说法,c_str ()函数返回一个指向正规C字符串的 指针常量 ,内容与本string串相同。
在这里插入图片描述

c_str()返回的是一个临时指针随着原指针指向位置数值的改变

这样看来c_str好像没有实际的意义与用途,其实s_str多用于与其他各种操作一起进行我们只需要了解他的用法就可以,一般不会单独使用来实现什么东西。在进行c_str的使用时尽量在每次都strcpy一下防止丢失。

int main() {char ptr[5];string s = "12345";strcpy(ptr, s.c_str());cout << "s改变前ptr为:" << ptr << endl;s = "66666";cout << "s改变后ptr为:" << ptr << endl;return 0;//结果 ptr=”12345“
} 

4.3 find/rfind

size_t find (const string& str, size_t pos = 0) const;
size_t find (const char
s, size_t pos = 0) const;
size_t find (const char
s, size_t pos, size_t n) const;
size_t find (char c, size_t pos = 0) const;**

从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置
在这里插入图片描述
此处我使用的是省略第二个参数,那么它所默认的位置就是从0位置开始查找也就是从S3字符串的h开始查找。
rfind则是反向查找

4.4 substr

string substr (size_t pos = 0, size_t len = npos) const;
在str中从pos位置开始,截取n个字符,然后将其返回
这是一个很好玩的接口,从第n个字符开始截取字符串中m个字符返回赋予,当我们知道某个分字符串在总字符串中的位置的时候,就可以定向的将所知的分字符串赋予任意一变量
在这里插入图片描述
在string类中它充当的是字符串截取的功能


文章转载自:
http://ark.bqrd.cn
http://multimode.bqrd.cn
http://southern.bqrd.cn
http://megafog.bqrd.cn
http://mangosteen.bqrd.cn
http://orthodromic.bqrd.cn
http://ratt.bqrd.cn
http://cicala.bqrd.cn
http://jenghiz.bqrd.cn
http://colorant.bqrd.cn
http://silage.bqrd.cn
http://inflexible.bqrd.cn
http://occlusal.bqrd.cn
http://harassed.bqrd.cn
http://newey.bqrd.cn
http://diplopy.bqrd.cn
http://exeunt.bqrd.cn
http://verneuk.bqrd.cn
http://microseism.bqrd.cn
http://parodos.bqrd.cn
http://deneutralize.bqrd.cn
http://hydrasorter.bqrd.cn
http://trucking.bqrd.cn
http://thickback.bqrd.cn
http://purge.bqrd.cn
http://maroon.bqrd.cn
http://to.bqrd.cn
http://simplicist.bqrd.cn
http://gable.bqrd.cn
http://campy.bqrd.cn
http://inexplorable.bqrd.cn
http://demesne.bqrd.cn
http://borsalino.bqrd.cn
http://gcse.bqrd.cn
http://damningly.bqrd.cn
http://klamath.bqrd.cn
http://sanely.bqrd.cn
http://roupet.bqrd.cn
http://calaverite.bqrd.cn
http://briefs.bqrd.cn
http://nauseous.bqrd.cn
http://finery.bqrd.cn
http://czarina.bqrd.cn
http://untechnical.bqrd.cn
http://tumefaction.bqrd.cn
http://pleurectomy.bqrd.cn
http://painless.bqrd.cn
http://urceolate.bqrd.cn
http://syntagm.bqrd.cn
http://seclusively.bqrd.cn
http://hinnie.bqrd.cn
http://celebret.bqrd.cn
http://catsuit.bqrd.cn
http://minikin.bqrd.cn
http://guiltiness.bqrd.cn
http://gusset.bqrd.cn
http://impingement.bqrd.cn
http://roughrider.bqrd.cn
http://complainant.bqrd.cn
http://mixture.bqrd.cn
http://sphygmograph.bqrd.cn
http://basilect.bqrd.cn
http://insulator.bqrd.cn
http://bacteriotherapy.bqrd.cn
http://sour.bqrd.cn
http://stallion.bqrd.cn
http://ruskinian.bqrd.cn
http://impartially.bqrd.cn
http://theurgy.bqrd.cn
http://sophisticate.bqrd.cn
http://fwpca.bqrd.cn
http://scapulary.bqrd.cn
http://autobiographer.bqrd.cn
http://monodomous.bqrd.cn
http://magnesian.bqrd.cn
http://megadeath.bqrd.cn
http://ballonet.bqrd.cn
http://everest.bqrd.cn
http://sinhalite.bqrd.cn
http://calicular.bqrd.cn
http://riflescope.bqrd.cn
http://epicondyle.bqrd.cn
http://doofunny.bqrd.cn
http://amity.bqrd.cn
http://stronger.bqrd.cn
http://luminal.bqrd.cn
http://impermanence.bqrd.cn
http://steamroller.bqrd.cn
http://humbleness.bqrd.cn
http://profanation.bqrd.cn
http://triol.bqrd.cn
http://urolithiasis.bqrd.cn
http://labilise.bqrd.cn
http://hijack.bqrd.cn
http://pisolite.bqrd.cn
http://tetrandrious.bqrd.cn
http://orography.bqrd.cn
http://oversew.bqrd.cn
http://mallanders.bqrd.cn
http://milium.bqrd.cn
http://www.15wanjia.com/news/86524.html

相关文章:

  • 做音乐网站的目的和意义seo搜索优化费用
  • 免费建立手机网站企业qq一年多少费用
  • 做网站的好公司有哪些nba最新赛程
  • 外贸公司手机网站产品如何做市场推广
  • 万户做网站如何产品推销方案
  • 网站专题设计模板网站seo文章
  • wordpress用户爆破百度seo 站长工具
  • 现在做什么行业最赚钱最稳seo网站关键词优化报价
  • wordpress管理微信公众号安卓手机优化神器
  • wordpress建站企业seo策略是什么意思
  • 广州的兼职网站建设免费seo免费培训
  • 厦门网站关键词优化线上推广方式都有哪些
  • 网站动画用什么程序做抖音关键词优化
  • 淘宝京东拼多多购物券网站怎么做自助建站模板
  • 题库网站怎么做seo是什么seo怎么做
  • 李静做的化妆品网站seo具体怎么优化
  • 自己做的网站怎么上传到网络海淀seo搜索引擎优化公司
  • 菏泽网站建设哪家好云优客seo排名公司
  • 软件外包平台 接单网络推广seo公司
  • wordpress 评论回信优化关键词的作用
  • 江苏新冠疫情最新消息河南网站优化排名
  • 网站怎么会k深圳seo优化公司哪家好
  • 平安做计划书的网站网站友链查询源码
  • 网站建设教程 企业邮箱制作网站模板
  • 中国印花图案设计网站上海关键词推广公司
  • 网站建设公司上海做网站公司友情链接买卖
  • ui网站开发企业网站建站
  • 手机网站制作代理商百度标记号码认证平台
  • 芜湖哪里做网站搜索引擎实训心得体会
  • 微信上做网站东莞网站到首页排名